a.html有三个ajax方法(ajax1,ajax2,ajax3),先后访问a.php,如果ajax1访问a.php程序sleep(15)。请问这样会不会阻塞ajax2,ajax3的访问呢,原因是什么?
a.html代码如下:
var a = 1;
var b = 1;
var c = 1;
function ajax1(){
$.get('a.php?from=a', function(){
$('#ajax1').text(a);
a++;
ajax1();
});
}
function ajax2(){
$.get('a.php?from=b', function(){
$('#ajax2').text(b);
b++;
ajax2();
});
}
function ajax3(){
$.get('a.php?from=c', function(){
$('#ajax3').text(c);
c++;
ajax3();
});
}
function beginAjax(){
ajax1();
ajax2();
ajax3();
}
a.php代码如下:
<?php
$from= $_GET['from'];
if($from == 'a'){
sleep(15);
}
echo 1;
6 回答
![?](http://img1.sycdn.imooc.com/545845e900013e3e02200220-100-100.jpg)
LEATH
TA贡献1936条经验 获得超6个赞
你模拟不就知道了,js直接发三个ajax请求过去
顺序是ajax1,ajax2,ajax3
分别带参数sleepTime1=10,sleepTime2=5,sleepTime3=2,
然后你打开调试network,你看三个ajax哪个先response。
![?](http://img1.sycdn.imooc.com/533e4d510001c2ad02000200-100-100.jpg)
慕仙森
TA贡献1827条经验 获得超8个赞
不一定阻塞. 要看具体情况. 比如你使用 nginx+php-fpm的架构. 你每次的http请求 由NGINX转发到 php-fpm. php-fpm 同一时间是只能处理一个请求的. 如果你的PHP-FPM进程数大于2 就不会阻塞. 否则就会没有PHP-FPM进程处理请求而超时. 不过这个超时是网络请求层面的. 和程序阻塞概念不一样.
![?](http://img1.sycdn.imooc.com/533e4d510001c2ad02000200-100-100.jpg)
杨魅力
TA贡献1811条经验 获得超6个赞
用的apache php mod,配置里只要apache进程的数量超过3,就不会阻塞。
用的nginx + php-fpm,fpm进程数量只要超过3,就不会阻塞。
- 6 回答
- 0 关注
- 416 浏览
添加回答
举报
0/150
提交
取消