解决方案 »

  1.   

    socket_set_timeout 是 stream_set_timeout 的别名
    1、是的
    2、每块读取前的等待时间
    即 $timeout2 时间内还没有读到数据,则算作失败
    3、默认是无限等待,既然你想限制等待时间,那你自然要为的行为负责
    4、fread 用于以二进制方式读取数据,除最后一块外,没快的长度都是一样的
          fgets 用于以文本方式读取数据,遇到 \n 就停止,遇到 \x1a 就算文件结束
          就数据而言,都是二进制的,所谓文本是加了些约束
          file_get_contents 和 file_put_contents 都是以二进制方式读写文件的
      

  2.   

    感谢版主大哥这么快就予了回复,回答的很清楚。想再请教下:
    利用socket在读取远端网页时,我看别人的代码一般都用如下循环语句,
    while (!feof($fp)) {
        $line = fgets($fp, 4096);
         break;
    }
    觉得很奇怪,心想为什么不用fread ( $handle,  $length )呢,只需把$length设置得足够大就行了。用fgets一行一行读取又有什么好处呢?