Web サーバーから返される HTTP チャンク データの場合、すべての応答が返された後にコールバックするのではなく、各チャンクが返されるときにコールバックを取得する必要がある場合があります。たとえば、サーバーが icomet の場合です。 PHP は次のとおりです:
<?php $url = "http://127.0.0.1:8100/stream"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'myfunc'); $result = curl_exec($ch); curl_close($ch); function myfunc($ch, $data){ $bytes = strlen($data); // 处理 data return $bytes; }
ただし、チャンクの場合、コールバック関数が複数回呼び出される可能性があり、毎回約 16k のデータが呼び出されます。これは明らかに私たちが望んでいることではありません。最後に「n」を付けます。コールバック関数をバッファリングできます。
function myfunc($ch, $data){ $bytes = strlen($data); static $buf = ''; $buf .= $data; while(1){ $pos = strpos($buf, "\n"); if($pos === false){ break; } $data = substr($buf, 0, $pos+1); $buf = substr($buf, $pos+1); // 处理 data } }
Qianaa がカスタマイズした IT 教育プラットフォーム、才能ある人材による 1 対 1 のサービス、あらゆる質問に答え、開発とプログラミングのソーシャル ヘッドライン公式ウェブサイト: www .wenaaa.com Qianaa アプリをダウンロードし、公式報酬に参加して現金 100 元を獲得してください。
QQ グループ 290551701 には、多くのインターネット エリート、テクニカル ディレクター、アーキテクト、プロジェクト マネージャーが集まっています。オープンソース テクノロジーの研究は、IT 業界で働くことに興味のある業界関係者、専門家、初心者を歓迎します。
上記は、curl を使用して HTTP チャンク データを読み取る PHP の紹介です (内容も含めて)。PHP チュートリアルに興味のある友人に役立つことを願っています。