脚本在PHP中终止之前的Echo JSON

时间:2014-05-31 08:37:57

标签: php yii

我正在尝试在函数终止之前从PHP脚本回显JSON。经过一番研究后,我得到了以下解决方案:

    Yii::log("STARTED");

    ignore_user_abort(true);
    set_time_limit(0);

    @apache_setenv('no-gzip', 1);
    @ini_set('zlib.output_compression', 0);
    @ini_set('implicit_flush', 1);

    ob_start();
    $res = array("res" => "test");
    echo json_encode($res);

    // get the size of the output
    $size = ob_get_length();

    // send headers to tell the browser to close the connection
    header("Content-Length: $size");
    header('Connection: close');

    // flush all output
    ob_end_flush();
    ob_flush();
    flush();

    // close current session
    if (session_id()) session_write_close();

    sleep(10);
    Yii::log("My task");

JSON正确发送到浏览器但是在关闭当前会话后我的脚本终止(即我在日志中看不到“我的任务”)。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您只想将一些json打印到浏览器,此代码就足够了:

Yii::log("STARTED");
$res = array("res" => "test");
echo CJSON::encode($res);
// close current session
if (session_id()) session_write_close();

sleep(10);
Yii::log("My task");