我有一个PHP脚本,大约需要10分钟才能完成。
我想向用户提供一些关于完成百分比的反馈,并且需要一些关于如何操作的想法。
我的想法是用jquery和$ .post命令调用php页面。
有没有办法在不结束脚本的情况下从PHP脚本返回信息?
例如,根据我对此的了解,如果我返回变量,PHP脚本将停止运行。
我的想法是将脚本拆分为多个PHP文件,并在给出前一个返回之后运行.post。
但是这仍然无法准确评估剩余的时间,因为每个脚本的大小都不同。
关于如何做到这一点的任何想法?
谢谢!
答案 0 :(得分:8)
您可以echo
和flush()
输出,但这是次优且相当脆弱的解决方案。
对于长时间操作,最好在后台启动脚本并在共享位置存储/更新脚本状态。
e.g。您可以使用fopen('http://…
调用,proc_open
PHP CLI进程或甚至只在<iframe>
中打开长时间运行的脚本来编写脚本。
您可以将状态存储在数据库或共享内存中(使用apc_store()
)。
这将允许用户随时检查脚本的状态(通过刷新页面或使用AJAX),如果浏览器的连接超时,用户将不会忘记脚本。
它还可以避免两次启动相同的长脚本。