我有一个表单,在提交时会调用一个 php 页面(sample.php)
我的 php 页面执行了大量操作,大约需要 5 分钟的时间。我也在打印“已执行!” 在我的 sample.php 页面上。
这个 Executed 被打印出来......只有在它执行完所有内容(5分钟)之后。
我希望我的 php 页面在完成所有处理之前打印“已执行”。
我该怎么办?
已经发布了几种解决方案,这些解决方案使用ignore_user_abort()
并flush()
在页面交付给客户端后继续后台工作。您应该开始阅读php 网站上有关连接处理的文档
但是,如果您要求一个稳定的解决方案,我会以“sample.php”(表单操作)将接收作业的方式设计您的应用程序,将其添加到队列(可能是数据库表)并报告已添加工作。另一个进程在后台运行(可能是每个 cron 或其他)并自行运行作业。此外,我会创建一个类似“progress.php”的页面,可以在其中查看工作进度。响应可以是 json 或类似的东西,以便它可以轻松地集成到其他页面或用作您被要求的 javascript 进度条的数据馈送。