允许多个实例的php脚本同时运行

5

我正在尝试使用ajax对php脚本进行多个同时请求,但似乎一次只能处理一个请求,在上一个请求结束前我无法连接到下一个请求。为了使它们同时执行,我该怎么做?我正在Windows上使用Apache(XAMPP),我也在我的Unix服务器上进行了测试,结果也是相同的。


我非常怀疑你的服务器一次只允许一个连接。更有可能的是,你在JavaScript中做了一些错误的操作 - 你能把它贴出来吗? - Skilldrick
1个回答

15
理论上,没有什么可以阻止一个 PHP 脚本被同时执行多次的情况——否则,很多网站都会遇到大问题;-)
所以,在你的情况下,可能有一些锁定机制来防止这种情况发生...
如果您的脚本正在使用会话,并且这些会话是基于文件的(这是默认设置),那么这些会话可能会导致这种问题:使用默认的会话处理程序,不可能同时让多个文件访问相同的会话数据(即对应于给定用户的会话数据);这是为了防止一个脚本覆盖另一个脚本的数据,并且可能不应该禁用。
所以,如果您的脚本正在使用会话:您是否可以停止使用会话? 如果不能,您应该尽快关闭它们,一旦您不再需要它们-以解锁用于存储它们的文件。
以下是关于此的session_write_close手册页面的引用:
会话数据通常在脚本终止后存储,无需调用session_write_close()函数,但由于会话数据被锁定以防止并发写入,因此一次只能有一个脚本操作会话。
当与框架集一起使用会话时,由于这种锁定,您会发现框架逐个加载。
您可以通过在所有会话变量的更改完成后立即结束会话来缩短加载所有框架所需的时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接