我们的系统如下:
和
查询Q1
不等于查询Q1'
,因为 P服务器会在将其发送到 M之前添加更多变量(如服务器时间,客户端IP)Q1服务器
响应R1根本没有变化。它会转发给客户端而不会更改。
同样适用于Q2。
问题是,如果同时发送Q1
和Q2
的ajax请求,Q2
会在 P服务器中等待{{1} } 完成。
所以这基本上是一个PHP / Apache问题。但是,我不知道如何挖掘这个问题。是多个PHP脚本问题还是多个请求问题?
我试过R1
,但这并没有改变任何事情。
答案 0 :(得分:0)
PHP的默认会话处理程序是基于文件的,并使用独占锁。这意味着与同一会话相关的请求将被序列化。实际上这是一件好事,它可以避免许多奇怪的并行编程问题,竞争条件等等。
如果您愿意,可以将会话处理程序更改为不那么偏执。或者你可以编写一个自己的文件,没有独占文件锁定,以避免这种行为。无论如何,在访问关键资源时要小心......(信号量,锁定等可以成为你的朋友。)
这里有一些相关的评论:
您可以在会话目录中使用inotifywatch
验证此行为。 (以前inotify事情可能导致内核恐慌和其他奇怪的行为......只在测试服务器上测试...)