php从服务器上不断读取

时间:2011-11-19 16:48:54

标签: php ajax

我正在尝试连续从服务器读取。 我正在使用fopensock()方法。 每个连接只读取一次数据的问题。 每行的长度为350位。

这是我的代码:

 <?php

$fp = fsockopen("maddress",myport, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: myaddress\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);

 while ( ($line = fgets($fp)) !== false) {
   echo "$line<br>";



   };
    fclose($fp);
}

?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
            <script type="text/javascript">
            window.onload=refresh;
            function refresh(){
                getTarget();
                setTimeout("refresh();",5000);
            }
  function getTarget(){


//1-creating object for the request
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    if (window.ActiveXObject) {
                    try {

    xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
                    } catch(e) {

    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
                    }

}
//2- excute response when it is ready
xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {

document.getElementById('targetText').innerText==xmlhttp.responseText;
    setTimeout("getTarget();", 5000);

           }
}   

//3- send request to the server

xmlhttp.open("GET","newEmptyPHPWebPage2.php",true);

//4- setting header for the request

xmlhttp.send(null);

}



</script>        


    </head>
    <body>


        <label id="targetText"></label>

    </body>
</html>

感谢您的关注!

1 个答案:

答案 0 :(得分:0)

while ( ($line = fgets($fp)) !== false) {
   echo "$line<br>";
}

这会让你不断阅读。