我有一个使用cURL的PHP脚本,大约需要10-15分钟才能执行.它做了什么,它解析大约1000页寻找特定的匹配,并在整个脚本中我有回声消息,如"转到下一页","找到匹配","加载页面错误"...现在它的工作方式(以及它的正常方式)是执行10分钟,然后才会吐出所有自定义消息.我希望能够在这些消息发生时显示这些消息,而不是在脚本执行完毕时.我在想像AJAX这样的东西,但我不确定它是如何工作的.任何提示都非常感谢.谢谢.
小智 11
所以,这是一个老帖子,但我找到了解决方案.因为我还必须做同样的事情,在脚本仍在运行时输出.这里没有任何答案有帮助.首先,我使用Win32服务器(生产)和XAMPP作为本地测试.这个例子只是一个概念证明,可以随意修改.
<?php
ob_implicit_flush(true);
for($i=1; $i<=10; $i++){
echo "$i ...<br>";
for($k = 0; $k < 40000; $k++) echo ' ';
sleep(1);
}
?>
Run Code Online (Sandbox Code Playgroud)
所以,我们打开输出缓冲区为隐式.然后我们制作一个从1到10计数的演示循环,并在处理它们时显示它们.第二个循环将填充浏览器缓冲区.最后检查一切是否正常,我们睡了1秒钟.否则脚本运行得太快,我们无法知道我们是否达到了目标.希望这可以帮助 !
您可以创建一个临时表.
PHP脚本可以将它们存储到数据库表(可能是内存表以获得性能),而不是回显消息.
然后,您可以使用ajax定期轮询单独的PHP脚本,该脚本将查询该表,并将任何新消息返回给客户端.
用于flush
通过刷新输出缓冲区立即将输出发送到浏览器.
echo "foo";
flush();
echo "bar";
flush();
Run Code Online (Sandbox Code Playgroud)