Heim  >  Artikel  >  Backend-Entwicklung  >  php 服务器推送有关问题

php 服务器推送有关问题

WBOY
WBOYOriginal
2016-06-13 13:47:37939Durchsuche

php 服务器推送问题。
现在准备做个聊天的功能,在网上看了下,说用 推技术啊。
但是不懂。用ajax 轮询的话 效率很低啊。。。

------解决方案--------------------

探讨
额。。。我始终觉得 ajax 长轮询的话 服务器压力很大啊。
如果用户多了就 。。

------解决方案--------------------
人少的时候,ajax轮循明显浪费资源,没新的聊天信息却在那边一直查啊查的。
人多的时候,comet建了比较多的长连接,估计有点难承受,主要是服务器那边的优化了。



这边是简单的例子……只是讲讲原理……
前端是普通的ajax,后端是死循环

HTML code




<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


<div id="test"></div>
<script type="text/javascript">
function test(){
    var aj;
    try{aj=new ActiveXObject("Msxml2.XMLHTTP");}
    catch(e){
        try{aj=new ActiveXObject("Microsoft.XMLHTTP");}
        catch(E){aj=false;}
    }
    var time = Math.round(new Date().getTime() / 1000);
    if(!aj&&typeof XMLHttpRequest!=undefined)aj=new XMLHttpRequest();
    aj.open("GET","b.php?time="+time,true);
    aj.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=utf-8');
    aj.onreadystatechange=function(){
        if(aj.readyState==4&&aj.status==200){
            document.getElementById("test").innerHTML += aj.responseText;
            test(); // 收到结果后重新建立连接
        }
    }
    aj.send(null);
}
test();
</script>

 <div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn