php - 如何为非阻塞 http 请求配置 PHP 或 Apache

标签 php apache nonblocking http-request

我有 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/

相关文章:

php - 切换 PHP 渲染引擎有什么影响?

php - 在 PHP 中发布数据值时出错

php - 安装 phabricator 时无法连接到 mysql

java - 如何在tomcat上自动运行webapps

scala - Play Framework 2.X 和阻塞数据库调用

php - 流畅的接口(interface)和类的复杂性

php - "Self Healing"的 OO 模式和/或结构化方法?

java - Oracle 数据库与 java 的连接

Java序列化,ObjectInputStream.readObject(),检查是否会阻塞

python - python中的异步等待/非阻塞等待