PHP多个脚本/请求

时间:2013-12-26 09:57:19

标签: ajax apache

我们的系统如下:

enter image description here

  • 客户:常规客户
  • P服务器:基本上像代理一样运行的apache服务器(将查询转发到M服务器)
  • M服务器:主服务器。所有工作都在这里完成。

查询Q1不等于查询Q1',因为 P服务器会在将其发送到 M之前添加更多变量(如服务器时间,客户端IP)Q1服务器

响应R1根本没有变化。它会转发给客户端而不会更改。

同样适用于Q2。

问题是,如果同时发送Q1Q2的ajax请求,Q2会在 P服务器中等待{{1} } 完成。

所以这基本上是一个PHP / Apache问题。但是,我不知道如何挖掘这个问题。是多个PHP脚本问题还是多个请求问题? 我试过R1,但这并没有改变任何事情。

1 个答案:

答案 0 :(得分:0)

PHP的默认会话处理程序是基于文件的,并使用独占锁。这意味着与同一会话相关的请求将被序列化。实际上这是一件好事,它可以避免许多奇怪的并行编程问题,竞争条件等等。

如果您愿意,可以将会话处理程序更改为不那么偏执。或者你可以编写一个自己的文件,没有独占文件锁定,以避免这种行为。无论如何,在访问关键资源时要小心......(信号量,锁定等可以成为你的朋友。)

这里有一些相关的评论:

您可以在会话目录中使用inotifywatch验证此行为。 (以前inotify事情可能导致内核恐慌和其他奇怪的行为......只在测试服务器上测试...)