fsockopen通信过程中反复fputs,fgets的问题[我没招了]
fsockopen打开一个url,
fputs发送请求。
while(!feof($fp)) fgets();
这是正常的步骤。
现在要反复请求那个url。
for($i=0;$i<8;$i++){
fputs发送请求。
while(!feof($fp)) fgets();
}
除了第一次得到了返回外,后续的几次都只能得到空。我的理解是:第一次请求返回数据的结尾就是eof标记。所以第二次指针指向的正好是这个eof,所以就跳不过去,所以就无法得到数据。
根据这个理解,我想出的解决办法。
---------------------
在while!feof之前加个fgets,让指针跳过这个eof标记。
fgets($fp,4096);
while(!feof....)
然而事实无情地击碎了我的猜测。得到的数据依然是空,在循环里echo,可以发现没有任何输出,就是循环没有进入。
----------------
我的理解是第一次取完返回数据的时候,文件指针的eof标记就被设定当前为真。以后的feof就取这个真值,而非再次进行判断。
----------------------
下面是我的解决办法