我有一个表单,在提交时,调用一个php页面(sample.php)
我的php页面执行了很多,大约需要5分钟的时间。我也正在打印“已执行!”在我的sample.php页面上。
只有在执行了所有操作(5分钟)后才执行此已执行。
我希望我的php页面在执行所有处理之前打印“Executed”。
我怎么这么做?
答案 0 :(得分:0)
已发布多个解决方案,使用ignore_user_abort()
和flush()
在页面传递到客户端后继续后台工作。您应该开始阅读php网站上connection handling上的文档
但是,如果你要求一个稳定的解决方案,我会以'sample.php'(表单操作)只接收一个作业,将它添加到一个队列(可能是一个数据库表)的方式设计你的应用程序报告已添加作业。其他进程在后台运行(可能是每个cron或其他)并运行作业本身。我还会创建一个像'progress.php'这样的页面,可以查看作业的进度。响应可能是json或类似的东西,因此它可以很容易地集成到其他页面或用作您被要求的javascript进度条的数据馈送。