2011-10-10 80 views
2

我有一个奇怪的问题,使用AJAX发布请求。我使用该请求通过使用php函数exec()直接在命令行上运行ImageMagick进程。该过程大约需要一分钟,然后用一些变量进行响应。这工作正常,除了一个问题。在执行期间,我不能超出安装在同一Web服务器上的网站其他部分(就像服务器无法访问)。当这个过程结束时,一切都很好。Ajax Post请求块网站加载

我首先想到这是由于服务器过载。但是,当您通过其他浏览器访问网站时,即使在其他浏览器中的过程执行期间也没有问题。所以看起来这些问题与浏览器在发布请求期间阻止其他请求有关。

有人能帮我一下吗?根本问题是什么?

+0

只想问一下,你在你的应用程序中使用会话,以及如何处理它们 – kukipei

+0

我使用php session_start()函数来检查用户是否已登录进入应用程序。与用户标识一起,会话cookie存储访问令牌。每个发布请求都会发送用户标识和访问标记,如果它们匹配,则会调用命令行请求。 – Bjorn

+0

嗯,这是我的意见,我不知道,但我认为你的应用程序锁定服务器上的会话文件,所以当你再次启动你的应用程序时,它会尝试访问相同的会话文件,并且会话文件被锁定。再次,我不确定... – kukipei

回答

0

找到解决方案!感谢kukipei的帮助通过添加session_write_close();到ajax请求的文件(在读取用户标识和标记之后),会话文件不再被锁定,并且所有页面都可以再次访问。问题是会话在整个流程执行期间被锁定,这是没有必要的,因为我只需要会话来读取用户标识和令牌。所以在调用ImageMagick操作之前,我现在要添加session_write_close()