为什么第二个独立 ajax 响应要等到第一个 ajax 响应才能获得?
Why second independant ajax response waits to be get untill first ajax response?
我正在使用 codeigniter。
以下是我在视图中的 AJAX 代码 -
jQuery(document).ready(function () {
$.ajax({
type:'post',
data:'',
url:HOST+'/exp1',
success:function(data)
{
alert('here1')
}
});
setInterval(function(){
$.ajax({
type:'post',
data:'',
url:HOST+'/exp2',
success:function(data)
{
alert(data)
}
});
}, 1000);
});
控制器代码为-
function exp1()
{
sleep(10);
}
function exp2()
{
echo 'test';
}
以上两个 ajax 调用是独立的,但在同一个控制器上。第一个 ajax 需要 10 秒才能得到响应,而第二个 ajax 需要 1 秒才能得到响应。
第二个 ajax 请求每 1 秒触发一次。
但是当我执行代码时,我没有得到第二个 ajax 的响应,直到得到第一个 ajax 响应。
我怎样才能同时驱动两个 ajax,以便在第一个 ajax 呼叫正在进行时,我会得到第二个 ajax 的响应?
会话阻塞问题。
在 exp1() 中 - 在 sleep(10) 之前调用 session_write_close() 应该可以防止其他并发页面的延迟请求。
"By default PHP writes its session data to a file. When you initiate a session with session_start() it opens the file for writing and locks it to prevent concurrent edits."
Two simultaneous AJAX requests won't run in parallel
"Long story short - call session_write_close() once you no longer need anything to do with session variables."
https://www.codeigniter.com/user_guide/libraries/sessions.html#a-note-about-concurrency
我正在使用 codeigniter。 以下是我在视图中的 AJAX 代码 -
jQuery(document).ready(function () {
$.ajax({
type:'post',
data:'',
url:HOST+'/exp1',
success:function(data)
{
alert('here1')
}
});
setInterval(function(){
$.ajax({
type:'post',
data:'',
url:HOST+'/exp2',
success:function(data)
{
alert(data)
}
});
}, 1000);
});
控制器代码为-
function exp1()
{
sleep(10);
}
function exp2()
{
echo 'test';
}
以上两个 ajax 调用是独立的,但在同一个控制器上。第一个 ajax 需要 10 秒才能得到响应,而第二个 ajax 需要 1 秒才能得到响应。
第二个 ajax 请求每 1 秒触发一次。
但是当我执行代码时,我没有得到第二个 ajax 的响应,直到得到第一个 ajax 响应。
我怎样才能同时驱动两个 ajax,以便在第一个 ajax 呼叫正在进行时,我会得到第二个 ajax 的响应?
会话阻塞问题。
在 exp1() 中 - 在 sleep(10) 之前调用 session_write_close() 应该可以防止其他并发页面的延迟请求。
"By default PHP writes its session data to a file. When you initiate a session with session_start() it opens the file for writing and locks it to prevent concurrent edits."
Two simultaneous AJAX requests won't run in parallel
"Long story short - call session_write_close() once you no longer need anything to do with session variables."
https://www.codeigniter.com/user_guide/libraries/sessions.html#a-note-about-concurrency