我有 apache 作为 http 服务器和 php,我从浏览器向这个有 for 循环的 php 脚本同时发送了大约 5 个请求,这需要很长时间才能完成,我看到所有并发请求都被阻止并按顺序提供服务。
如何为 http 请求服务的非阻塞行为而不是顺序服务行为配置 apache 或 php?
I know that Tomcat server http connector can tune using following server parameters
– Threads (maxThreads)
– Keep alive requests (maxKeepAliveRequests)
– TCP Backlog (acceptCount)
– connectionTimeout
– Socket buffers
- Use different connectors (nio, apr, bio)
etc...
针对 5 个并发请求进行测试的 php 代码片段,但由 Web 服务器(apache 2.2、php 5.3)按顺序提供服务
<?php
for ($i = 1; $i < 500000; $i++) { //do some processing which takes some time
$sq = sqrt($i);
$val += $sq;
}
echo $val;
?>
最佳答案
我遇到了类似的问题,发现 Apache 和 PHP 配置正确,但我的 PHP 脚本在特定资源上阻塞。在我的例子中,是 session 文件被锁定,每个请求都需要在 session 文件再次空闲并可以服务于新请求之前完成。 (这里有一篇文章更深入地解释了这个问题:http://konrness.com/php5/how-to-prevent-blocking-php-requests/)一旦我阻止了 session 阻塞,我就开始看到人们所期望的并行性。
关于php - 如何为非阻塞 http 请求配置 PHP 或 Apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11739709/