Ajax PHP多个脚本/请求
我们的系统如下所示:Ajax PHP多个脚本/请求,ajax,apache,Ajax,Apache,我们的系统如下所示: 客户:普通客户 P服务器:基本上像代理一样运行的apache服务器(将查询转发到M服务器) M服务器:主服务器。所有的工作都在这里完成了 及 QueryQ1不等于QueryQ1',因为p Server在将Q1发送到M Server之前添加了更多变量(如服务器时间、客户端IP) 响应R1根本没有改变。它被转发到客户端而不进行更改 第二季度也是如此 问题是,如果同时发送带有Q1和Q2的ajax请求,Q2在p服务器中等待R1完成 这基本上是一个PHP/Apache问题。但是
- 客户:普通客户
- P服务器:基本上像代理一样运行的apache服务器(将查询转发到M服务器)
- M服务器:主服务器。所有的工作都在这里完成了
Q1
不等于QueryQ1'
,因为p Server在将Q1发送到M Server之前添加了更多变量(如服务器时间、客户端IP)
响应R1根本没有改变。它被转发到客户端而不进行更改
第二季度也是如此
问题是,如果同时发送带有Q1
和Q2
的ajax请求,Q2
在p服务器中等待R1
完成
这基本上是一个PHP/Apache问题。但是,我不知道如何挖掘这个问题。是多个php脚本问题还是多个请求问题?
我尝试了
session\u write\u close()
,但没有改变任何事情。PHP的默认会话处理程序基于文件并使用独占锁。这意味着与同一会话相关的请求将被序列化。实际上,这是一件积极的事情,它可以避免许多奇怪的并行编程问题、竞争条件等
如果愿意,可以将会话处理程序更改为不太偏执的类型。或者,您可以编写自己的基于文件的文件,而无需独占文件锁定来避免这种行为。无论如何,访问关键资源时要小心。。。(信号灯、锁定等可以是您的朋友。)
这里有一些相关评论:
您可以使用会话目录中的
inotifywatch
验证此行为。(以前,inotify可能会导致内核恐慌和其他奇怪的行为…仅在测试服务器上测试…您如何运行PHP(HTTPD或PHP-FPM)?您正在生成多少进程?简而言之,Q1不应该等待Q2,除非他们在等待相同的资源。这是httpd。你说的相同资源是什么意思?Q1和Q2被发送到同一个文件:data\u manager.php
,Q1`和Q2`被发送到同一个java servlet。