fsockopen 长连接 文件流读取

2016-6-11 奇Yu WEB开发

正常使用fsockopen 模拟POST GET读取 HTTP 协议 使用

读取的时候都是用


while (!feof($fp)) {   
echo fgets($fp, 128);   
}   
但是如果这个链接是 是一个TPC 长连接。这样读取就会 一直读一直读,原因是 feof一直没有到结尾


可以看 feof的解释是

C5E5C326-AE57-414D-B879-B20BF9F307C5.png

因为HTTP 的请求 服务器完成后自动断开了,所以可以读取到,而socket长链接 并没有直接断开,

现在解决办法 

要么在服务器端 断开这个链接

或者 服务器端输出的时候 加上 一个EOF 标志  然后在客户端判断这个标志 停止读取


<?php

error_reporting(E_ALL);

$fp = fsockopen("127.0.0.1", 88, $errno, $errstr, 10);
if (!$fp) {
    echo $errstr . " (". $errno . ")<br>n";
} else {

   $a=(json_encode(array('path'=>'user/user/login','param'=>array('aaa'=>'aaa'))));

   fputs($fp,$a);

    $cursor = "";
    $inData = "";
     while(!strstr($inData,"\r\n")) {
      $cursor= fgets($fp,128);
      $inData.=$cursor;
    }

    echo $inData;


    fclose($fp);
}



?>



标签: php

发表评论:

Powered by emlog 豫ICP备14014990号-1 sitemap