不断从服务器读取php

不断从服务器读取php,php,ajax,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 .=

我正在尝试不断地从服务器读取数据。 我正在使用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>

window.onload=刷新;
函数刷新(){
getTarget();
设置超时(“刷新();”,5000);
}
函数getTarget(){
//1-为请求创建对象
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
if(window.ActiveXObject){
试一试{
xmlhttp=newActiveXObject('Msxml2.xmlhttp');
}捕获(e){
xmlhttp=newActiveXObject('Microsoft.xmlhttp');
}
}
//2-准备就绪时执行响应
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById('targetText')。innerText==xmlhttp.responseText;
setTimeout(“getTarget();”,5000);
   }
}   
//3-向服务器发送请求
open(“GET”,“newEmptyPHPWebPage2.php”,true);
//4-设置请求的标头
xmlhttp.send(空);
}
感谢您的关注!

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

这会让你进入一个不断阅读的循环。

你在这里限制每一行:
fgets($fp,350)
您确定有多行吗?我对答案做了一些更改,这会让您转到其他地方吗?事实上,这是一个文件…我正在连续阅读文本的一部分..文件结束时将从开始发送。我编辑了代码..如果您有时间,请查看它。谢谢。