ホームページ >バックエンド開発 >PHPチュートリアル >fgets が遅いのですが、何か方法はありますか?
方法:
$fp = fsockopen($server, $port, $errno, $errstr ,30);fputs($fp, $send_all);stream_set_timeout($fp, 30);$result = '';while(!feof($fp)) { $result.= fgets($fp,1024);}print_r($result);
curl についてはどうですか?
遅いのはネットワーク接続が原因です。ハードウェア環境が変更されない限り、コードを変更しても問題は解決しません。
ネットワーク接続が遅いのは、ハードウェア環境が変更されない限り問題ありません。コードをどのように変更しても役に立ちません
情報を見ましたが、fread と fget の原理がよくわかりません。
fread はすべてのデータを一度に非常に高速に読み取りますが、完全なデータを取得することはできず、取得できるのは 1,000 バイト以上です。
fgets には毎回 1024 個かかりますが、すべてを取得することもできます。しかし、それは非常に遅いです。
fgets は毎回再リンクする必要があるので、ループが 10 回を超えると、そのたびに重ね合わせが遅くなりますか?
fgets と fread は接続に直接関与しません。データ パケットは到着後、ローカル バッファを読み取るため、バッファに格納されるため、速度には影響しません。
fread は、指定されたサイズのデータ ブロックをファイルの終わりまで読み取ります。ファイルの終端が判断できない場合は待ちが発生し、失敗の原因となります。
fgets は、指定されたサイズのデータ ブロックを読み取り、ファイルの終わりまで改行文字に遭遇すると読み取りを停止します
リモート データを取得するには、一般的に file_get_contents を使用します
ファイル全体が 8k を超えない場合は、その方が良いです
1024を入れる 試しに外して見てください
理由が分かりました。
サーバー上の MTU パッケージは制限されています。
http://blog.csdn.net/jjjfew/article/details/6413460