Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么apache不同时处理来自同一浏览器的多个请求_Php_Http_Apache2_Xmlhttprequest - Fatal编程技术网

Php 为什么apache不同时处理来自同一浏览器的多个请求

Php 为什么apache不同时处理来自同一浏览器的多个请求,php,http,apache2,xmlhttprequest,Php,Http,Apache2,Xmlhttprequest,我不太确定如何正确表达这个问题,所以我将从我遇到的场景开始 我的web应用程序中有一点处理过程,这比我希望用户等待再次控制页面所需的时间要长,因此我决定通过ajax请求对其进行处理 问题是,即使我将此请求卸载到ajax请求中,似乎apache在原始处理器繁重的请求完成之前不会处理任何进一步的请求 我原本想知道如何绕过这个问题,但后来决定,这可能是一个坏主意 然而,我仍然很好奇,是否有人知道apache为什么会这样做,以及是什么(如果有的话)配置指令控制它。我最初的想法是保持活力,但这似乎并没有改

我不太确定如何正确表达这个问题,所以我将从我遇到的场景开始

我的web应用程序中有一点处理过程,这比我希望用户等待再次控制页面所需的时间要长,因此我决定通过ajax请求对其进行处理

问题是,即使我将此请求卸载到ajax请求中,似乎apache在原始处理器繁重的请求完成之前不会处理任何进一步的请求

我原本想知道如何绕过这个问题,但后来决定,这可能是一个坏主意

然而,我仍然很好奇,是否有人知道apache为什么会这样做,以及是什么(如果有的话)配置指令控制它。我最初的想法是保持活力,但这似乎并没有改变行为

我正在通过mod_php运行php,如果这有什么不同的话


我非常感谢任何能为我指明正确方向的帮助

你能指出它是apache的证据吗?除非您的apache设置不是最优的,否则您的页面等待很可能是其他原因,也许您已经将ajax调用设置为非异步的

您正在使用基于文件的会话吗?PHP将为每个请求锁定会话文件,并保持该锁定,直到您执行
会话\u write\u close()
或脚本终止/退出。这样做的副作用是,所有请求都变成串行的,因为它们都在争夺同一个资源(会话文件)。

我敢肯定是会话文件。我也有同样的问题。我运行了一个很长的请求,比如PHPMyAdmin SQL插入,它需要几分钟来处理。在处理过程中,我尝试在同一浏览器中打开一个新选项卡,并转到我网站上的任何页面,在原始PHPMyAdmin请求完成之前,它不会转到那里。 如果我在Chrome浏览器中打开一个匿名窗口,它也可以正常工作。如果我在任何其他浏览器中打开该网站,都可以。 因此,基于文件的会话可能是PHP的默认会话

其他人提到去memcached。您还可以在数据库中保存会话。
在进入memcached之前,您可以在开始时完成所有基于会话的工作。将会话变量复制到临时变量中,以便可以关闭它,然后再关闭它。然后,如果以后需要设置会话值,请打开它并进行更改,然后快速关闭它。

ServerFault更有可能找到此问题的答案。谢谢amber,你可能是对的,我应该在那里发布消息-但事实证明,我对问题的误解让我找到了正确的位置:-)在大多数正常的生产系统中,您可能会使用另一个会话处理程序,如memcached。但是,是的,这是一种可能性。那一定是它-据我所知,会话是基于文件的。听起来是尝试迁移到memcached的好时机!谢谢在进入memcached之前,您可以在开始时完成所有基于会话的工作。然后关上它。将会话变量复制到临时变量中,以便您可以关闭它,如果以后需要设置会话值,请打开它并进行更改,然后快速关闭它。我在下面的回答中也加了这个。谢谢你的建议——我没有证据证明它是apache——只是我不知道它还会是什么。我使用open('GET',url,true),所以调用应该是异步的,但也有同样的问题。通过尽快结束会议解决。