zoukankan      html  css  js  c++  java
  • session锁导致的ajax请求阻塞

              ajax是异步的,而且是支持同时多个请求的,但是一次使用中,发现ajax会发生阻塞,当时我用ajax发送一个发邮件的请求,该请求会执行很长时间,所以我同时发送一个请求去查询已经发送了多少条。但是发现,查询的ajax请求,每次都要等发送的请求回来后,才会去执行,最后多此实验加百度发现了问题

              如果多个ajax请求指向的同一个php文件中用到了session,而且没有释放锁,那么请求就会阻塞

              因为php端执行session_start()的时候,会创建一个session文件并锁定他,当脚本执行完毕的时候,就会释放它,而这个时候其它的请求就会排队等待。

              实验如下:

                      两个ajax请求,从上向下执行  

               

               服务器端:开启session;test1 等待10秒   test2等待 3秒   

             

           最后实际执行结果中,alert()先弹出“test111”,然后再弹出“test222”;,即必须等待第一个ajax执行完了才会执行第二个ajax

           解决方法:

                 1.ajax指向的文件不用session,或者指向一个文件用session,另一个文件不用session(注意:就算指向两个文件,同域名下两个文件都用了session也是不行的,除非不同域名)

                 2.使用session_write_close();这个方法,等于解除了session锁。

                 

       

        

  • 相关阅读:
    FormData的使用
    数据绑定
    DOM的映射机制
    leetcode750
    leetcode135
    leetcode41
    leetcode269
    leetcode253
    leetcode42
    leetcode48
  • 原文地址:https://www.cnblogs.com/flyyu/p/13748234.html
Copyright © 2011-2022 走看看