不断从服务器读取php
我正在尝试不断地从服务器读取数据。 我正在使用fopensock()方法。 每个连接只读取一次数据的问题。 每行的长度为350位 这是我的代码:不断从服务器读取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 .=
<?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)
您确定有多行吗?我对答案做了一些更改,这会让您转到其他地方吗?事实上,这是一个文件…我正在连续阅读文本的一部分..文件结束时将从开始发送。我编辑了代码..如果您有时间,请查看它。谢谢。