在 Web 应用程序中,许多 jQuery+Ajax+PHP 进程在同一客户端中不是 运行 并行
In a web application many jQuery+Ajax+PHP processes not running parallel in the same client
在与一台服务器交互的 Web 应用程序中,有一个 jQuery Ajax 调用和一个 PHP 脚本,执行大约需要 20 秒。
$(document).ready(function() {
$.ajax({
type: 'POST',
dataType: 'json',
url: 'createPDF.php',
data: str,
success: function(response) {
showPDF(response);
}
error: function() {
console.log('ERROR WHEN CREATING PDF');
}
});
});
与此同时,用户要求应用程序通过另一个独立于 createPdf 的 jQuery Ajax 获取列表 (getList.php)。
$(document).ready(function() {
$.ajax({
type: 'POST',
dataType: 'json',
url: 'getList.php',
data: str,
success: function(response) {
showList(response);
}
error: function() {
console.log('ERROR WHEN GETTING LIST');
}
});
});
问题是 getList.php 仅在 createPDF.php 完成后才开始执行。
该应用程序与会话一起工作,并且已在单独的客户端中完成测试,在这种情况下,两个请求 运行 并行,但在同一台计算机中它们不会。
在这种情况下如何运行 两个请求并行?
谢谢
基本上发生的事情是在您的服务器上会话文件被第一个脚本锁定,例如saveFiles
。该脚本完成其任务后,会话将再次解锁。不幸的是,您的脚本 getList
想要访问同一个会话,因为它已被锁定,getList
将不得不等到它被解锁。
一个解决方案是在所有会话数据写入完成后调用session_write_close()
,这将导致会话文件被解锁并被下一个脚本使用。该调用显然应该在 session_start()
之后尽快发生,以尽量减少其他请求的等待时间。
有关更详细的说明,请查看
在与一台服务器交互的 Web 应用程序中,有一个 jQuery Ajax 调用和一个 PHP 脚本,执行大约需要 20 秒。
$(document).ready(function() {
$.ajax({
type: 'POST',
dataType: 'json',
url: 'createPDF.php',
data: str,
success: function(response) {
showPDF(response);
}
error: function() {
console.log('ERROR WHEN CREATING PDF');
}
});
});
与此同时,用户要求应用程序通过另一个独立于 createPdf 的 jQuery Ajax 获取列表 (getList.php)。
$(document).ready(function() {
$.ajax({
type: 'POST',
dataType: 'json',
url: 'getList.php',
data: str,
success: function(response) {
showList(response);
}
error: function() {
console.log('ERROR WHEN GETTING LIST');
}
});
});
问题是 getList.php 仅在 createPDF.php 完成后才开始执行。
该应用程序与会话一起工作,并且已在单独的客户端中完成测试,在这种情况下,两个请求 运行 并行,但在同一台计算机中它们不会。
在这种情况下如何运行 两个请求并行?
谢谢
基本上发生的事情是在您的服务器上会话文件被第一个脚本锁定,例如saveFiles
。该脚本完成其任务后,会话将再次解锁。不幸的是,您的脚本 getList
想要访问同一个会话,因为它已被锁定,getList
将不得不等到它被解锁。
一个解决方案是在所有会话数据写入完成后调用session_write_close()
,这将导致会话文件被解锁并被下一个脚本使用。该调用显然应该在 session_start()
之后尽快发生,以尽量减少其他请求的等待时间。
有关更详细的说明,请查看