是的,它应该只用PHP来实现.我记得看到一些与此相关的代码,当我一段时间追踪wordpress时,当它更新模块时,它必须ftp,解压缩,复制文件等,这需要很长时间,并且它喜欢让用户更新它正在做什么...在检查了他们的send_message()函数,并阅读PHP ob_flush()页面之后,我想你想要:
echo "stuff\n"; // adding a newline may be important here, // a lot of io routines use some variant of get_line() ob_end_flush(); // to get php's internal buffers out into the operating system flush(); // to tell the operating system to flush it's buffers to the user.
php手册中的人员也暗示可能有助于显式设置带有mime类型和字符集的header(),因此浏览器会在开始时知道它并且不会等待整个二进制对象在试图使它具有什么样的实体之前变得可用.
如果这不起作用,你需要进一步修改你的系统php.ini以关闭输出缓冲和压缩,此时你可以去看看ajax解决方案.
ajax解决方案看起来像:
你的脚本吐出一些html/javascript命中ajax请求,刷新所有缓冲区,并停止与用户有关,然后启动一些操作,或者可能只是表明某个大型操作是在数据库的某个地方为cron启动找工作.页面上的javascript将有一个计时器循环来轮询ajax端点的状态,直到ajax回复它已完成.ajax端点将通过查询数据库或检查输出文件等来检查任务的状态,并立即吐出所有已知的并终止,让客户决定何时再次询问.这是一个涉及更多活动部件的更多参与和复杂的活动,但如果值得花时间制作,则为用户实现了非常好的最终产品.
是的,它应该只用PHP来实现.我记得看到一些与此相关的代码,当我一段时间追踪wordpress时,当它更新模块时,它必须ftp,解压缩,复制文件等,这需要很长时间,并且它喜欢让用户更新它正在做什么...在检查了他们的send_message()函数,并阅读PHP ob_flush()页面之后,我想你想要:
echo "stuff\n"; // adding a newline may be important here, // a lot of io routines use some variant of get_line() ob_end_flush(); // to get php's internal buffers out into the operating system flush(); // to tell the operating system to flush it's buffers to the user.
php手册中的人员也暗示可能有助于显式设置带有mime类型和字符集的header(),因此浏览器会在开始时知道它并且不会等待整个二进制对象在试图使它具有什么样的实体之前变得可用.
如果这不起作用,你需要进一步修改你的系统php.ini以关闭输出缓冲和压缩,此时你可以去看看ajax解决方案.
ajax解决方案看起来像:
你的脚本吐出一些html/javascript命中ajax请求,刷新所有缓冲区,并停止与用户有关,然后启动一些操作,或者可能只是表明某个大型操作是在数据库的某个地方为cron启动找工作.页面上的javascript将有一个计时器循环来轮询ajax端点的状态,直到ajax回复它已完成.ajax端点将通过查询数据库或检查输出文件等来检查任务的状态,并立即吐出所有已知的并终止,让客户决定何时再次询问.这是一个涉及更多活动部件的更多参与和复杂的活动,但如果值得花时间制作,则为用户实现了非常好的最终产品.