5

我正在尝试使用 ajax 向 php 脚本发出多个同时请求,但是,它似乎一次只执行 1 个实例,并且在前一个调用完成之前我无法连接以进行下一个调用。我该怎么做才能让它同时完成它们?我在 Windows 上使用 apache (xampp)。我还在我的 unix 服务器上对此进行了测试,同样的事情也发生在那里。

4

1 回答 1

15

从理论上讲,没有什么可以阻止一个 PHP 脚本并行执行多次——否则,很多网站都会出现大问题;-)

所以,在你的情况下,可能有一些锁定机制可以防止这种情况......


如果您的脚本正在使用会话,并且这些会话是基于文件的(这是默认设置),那么这些会话可能会导致此类问题:使用默认会话处理程序,不可能有多个文件访问相同的会话数据(即与给定用户对应的会话数据)同时;这是为了防止一个脚本覆盖另一个脚本的数据,并且可能不应该被禁用。

因此,如果您的脚本正在使用会话:您可以停止使用会话吗?
如果没有,您应该尝试在不需要它们时立即关闭它们——以解锁用于存储它们的文件。

这是来自手册页的引用session_write_close,关于该:

会话数据通常在脚本终止后存储,无需调用 session_write_close(),但由于会话数据被锁定以防止并发写入,任何时候只有一个脚本可以对会话进行操作
将框架集与会话一起使用时,由于这种锁定,您将体验到一个一个加载的框架。
您可以通过在会话变量的所有更改完成后立即结束会话来减少加载所有帧所需的时间。

于 2010-07-18T19:15:31.877 回答