【问题标题】:PHP / Apache - Refreshing screen while exec'd script is runningPHP / Apache - 执行脚本运行时刷新屏幕
【发布时间】:2013-04-07 04:52:21
【问题描述】:
我网站上的一个页面是一个 PHP 脚本,它使用 exec() 来启动一个单独的 PHP 脚本,该脚本会生成一个 PDF 文档。
生成 PDF 可能需要 30 秒。当我在此过程中点击刷新按钮时,我发现行为不一致。在我的 Mac 和 Windows 本地开发机器上,刷新页面都会挂起 Apache。在我的生产 Linux 服务器上,我似乎没有遇到此问题。
这是为什么?我不在乎我的开发机器挂起,我只是想确保它不会在生产中发生。
【问题讨论】:
标签:
php
apache
webserver
exec
【解决方案1】:
你是每次页面渲染时都运行exec(),还是有一些逻辑来检查之前的php脚本是否完成?
您可能会在每次刷新页面时生成一个新的 PDF。
如果这需要一段时间,它可能会挂起 Apache,因为其线程池中的所有线程都在等待执行的脚本完成,如果它们没有正确分离的话。
如果是这种情况,它肯定会在您的生产服务器上挂起 Apache。