【发布时间】:2013-04-24 00:45:48
【问题描述】:
我正在尝试在页面/连接关闭后继续执行 PHP 脚本。
用户将每 1 小时轮询一次脚本,我想返回一些 json 输出并希望在后台继续脚本。我正在使用共享主机,但无法使用 cron 作业。
这是我尝试过的。
ob_start();
ignore_user_abort();
echo "JSON_OUTPUT GOES HERE";
$ob_length = ob_get_length();
header("Content-Type : text/plain",TRUE);
header("Content-Length : $ob_length",TRUE);
header("Connection : Close",TRUE);
flush();
ob_flush();
ob_end_flush();
sleep(3);
echo "You cant see me..";
exit();
我正在使用 Codeigniter 框架,但它无法在我的实时服务器上运行。它等待 3 秒,然后也输出 You cant see me..。
请帮帮我。
注意
项目托管在 LINUX/WINDOWS/WAMP-SERVER 共享主机中。
【问题讨论】:
-
我可以看到的第一个错误我必须在发送任何实际输出之前调用 header() 函数,无论是通过普通 HTML 标记、文件中的空白行还是来自 PHP php manual
-
@lucky88 OP 已经在使用output buffering。
-
为什么不使用 cron 在后台运行 PHP 脚本(或者更好的是,shell 脚本或更适合类似守护进程的任务),并让 poll 脚本简单地查询其进度?感觉更优雅。
-
@Pekka웃 原因:共享 Godaddy 服务器。
-
Godaddy 不是限制脚本的最大运行时间吗?脚本在后台做什么?
标签: php codeigniter output-buffering