在处理PHP脚本时,通过JQUERY实时输出JSON响应

时间:2015-09-16 10:02:59

标签: php jquery json ajax real-time

我需要帮助解决我无法使用JQUERY实时输出JSON响应的问题,而PHP调用外部命令行脚本。

首先,我使用this JQUERY AJAX file upload with progress bar example来处理文件上传。所以在这里你几乎可以看到我对该机制的编码。虽然我添加了" dataType:' json'"处理响应的选项。

在PHP脚本中,我处理文件上传,清理文件名等。然后我调用外部cmd进程。此过程会抛出更新,例如"已完成:10%",直至"已完成:100%"。这是我想通过json扔出浏览器的信息。这是我的代码:

ob_implicit_flush(true);
ob_end_flush();

$cmd = //call exe with arguements

$descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("pipe", "w")
);
flush();
$process = proc_open($cmd, $descriptorspec, $pipes, NULL, NULL);
if (is_resource($process)) {
    $return = array();
    while ($s = fgets($pipes[1])) {
        $return['status'] = substr($s,0,16);
        echo json_encode($return);
        //file_put_contents($file, json_encode($return));
        flush();
    }
}      
proc_close($process);

这会抛出这个json输出:

{"status":"Completed: 10%\r\n"}
{"status":"Completed: 13%\r\n"}
{"status":"Completed: 16%\r\n"}
... truncated ...
{"status":"Completed: 90%\r\n"}
{"status":"Completed: 95%\r\n"}
{"status":"Completed: 100%\r","output":"<p><img src=\"images\/accept.png\" width=\"16\" height=\"16\" alt=\"\" valign=\"top\" \/> Successfully converted:<br \/><br \/><a href=\"test.zip\">test.zip<\/a><\/p>"}

所以,我希望能够每2/3秒输出一次状态值。最终输出值在JQUERY成功函数中输出。

请记住,我是JQUERY和AJAX的轻量级用户。

[编辑]备用路由是我将状态消息写入唯一的txt文件,并且每隔几秒就进行一次JQUERY轮询。

0 个答案:

没有答案