PHP / Apache阻止每个请求?

时间:2009-01-10 08:37:04

标签: php apache

好的,这可能是一个愚蠢的问题,但这里有。前几天,当我在PHP中使用不同的HTML到PDF转换器时,我注意到了一些事情。我试过的一个(dompdf)花了很长时间来运行我的HTML。最终它耗尽内存并结束但是当它仍在运行时,我的其他任何PHP脚本都没有响应。几乎就好像一个请求阻止了整个Web服务器。

现在我假设要么是不对的,要么我应该设置一些东西来控制这种行为。有人可以告诉我吗?

3 个答案:

答案 0 :(得分:7)

你有没有为每个脚本打开会话?:)他们可能会重复使用相同的sesion并阻塞直到会话被最后一个请求释放...所以他们基本上等待彼此完成(在你的情况下)长期运行的pdf生成器)。这仅适用于使用相同浏览器的情况。

提示,不确定为什么要html到pdf,但是你可以看一下FOP http://xmlgraphics.apache.org/fop/来生成PDF。我正在使用它并且工作得很好......而且很快:)它确实有它的怪癖。

答案 1 :(得分:2)

可能是您尝试的所有脚本都在同一个应用程序池中运行。 (至少,这就是它在IIS中所称的内容。)

但是,另一种解释是某些浏览器会通过单个连接对请求进行排队。这让我在过去有些困惑。如果您的网络浏览器正在等待来自yourdomain.com/script1.php的响应,并且您打开了另一个窗口或标签到yourdomain.com/script2.php,那么在第一个请求收到回复之前将不会发送请求似乎就像整个网络服务器一样。一种简单的方法来测试是否正在进行测试,在两个不同的浏览器上尝试两个请求。

答案 2 :(得分:0)

听起来服务器只是被淹没,而且负载太大而无法完成请求。将HTML文件转换为PDF是一个非常复杂的过程,因为PHP脚本必须有效地提供与Web浏览器相同的功能,并使用PDF绘图功能呈现HTML。

我建议您将HTML拆分为单独的较小文件,或者直接通过PHP独立于服务器将脚本作为计划任务运行。