2014-01-14 148 views
0

我有一个应用程序,首先使ajax调用一个沉重和长期的操作(使用大量的数据库),并且它也使其他ajax调用轻而快的操作,只检查大手术的进展。Ajax调用行为异步

问题是,短操作的ajax调用没有得到响应,而大操作也没有得到它的响应。这很奇怪,因为它们可以同时运行。

当我手动检查(在phpmyadmin上)大操作的进度时,(MySQL)数据库响应正常。所以问题可能不是表锁问题,但我不确定。

有没有人有想法帮助我?

+2

使用同一会话的两个页面不能同时请求,因为PHP将请求排队以避免并发写入。 – adeneo

+1

@adeneo其实你可以但你必须告诉PHP:在开始重载操作之前调用'session_write_close()'。很明显,你不能再写下去。 – hanzi

+0

@hanzi - 然后会话关闭,如果不是同一会话,您可以根据需要请求尽可能多的页面,Web服务器如何能够同时为多个用户提供同一页面。 – adeneo

回答

0

在开始重载操作之前调用session_write_close()。很明显,你不能再写下去。由于PHP队列请求以避免并发写入,因此不能同时请求使用同一会话的两个页面。

调用session_write_close()将导致服务器能够在响应前一个请求(如果有)之前响应客户端请求。