fsockopenとfgetsを使ってWebページのコンテンツを取得しようとしたときに問題が発生しました。私は簡単に次のようにWebサーバからヘッダを受け取ることができます:私は本当に疑問に思ってphp fsockopen fgetsが遅すぎる
……
fgets start at 12:23:45
219
Fgets end at 12:23:47
……
:
$fp = @fsockopen(“www.abc.com”, 80, $errno, $errstr, 30);
fwrite($fp, $request);//$request is my predefined header including path and cookies
$lines=””;
while (!feof($fp))
{
Echo “fgets start at ”.date(“H:i:s”).”\n”;
$line = fgets($fp, 4096);
Echo strlen($line) .”\n”;
Echo “fgets end at ”.date(“H:i:s”) .”\n”;
$lines +=$line;
}
fclose($fp);
出力は、そのようなものだった:
HTTP/1.1 200 OK
[cache-control] => private
[content-type] => text/plain; charset=utf-8
[server] => Microsoft-IIS/7.0
[x-aspnet-version] => 2.0.50727
[x-powered-by] => ASP.NET
[date] => Sat, 23 Jul 2011 10:36:57 GMT
[connection] => close
[content-length]=> 30072
[vary] => Accept-Encoding [content-encoding] => gzip
私のコードは以下の通りですわずか219バイトのデータを取得するのに2秒かかります。 数百回のfgets繰り返しを含むページ全体を取得するには、40秒を費やします。あなたがfirefoxを使うのであれば、ちょっと待ってください。
fgetsが遅すぎる原因を知りたいのですが。
読んでいただきありがとうございます。
うーんを、読んでいない可能性があります) '? – Zyava
この@ cn2500の解決策を見つけましたか? –