高度なスキル: 複数のファイルをダウンロードするための PHP 非同期 HTTP 開発経験の共有
はじめに:
現代の Web 開発では、複数のファイルをダウンロードする必要があることがよくあります。サーバーから複数のファイルをダウンロードする必要があります。多数のファイルのダウンロード タスクの場合、従来の同期ダウンロード方法では重大なパフォーマンスの問題が発生します。この問題を解決するには、PHP の非同期 HTTP ダウンロード機能を使用して、複数のファイルのダウンロードを効率的に処理できます。
2.1 複数のダウンロード リクエストの管理
複数のファイルをダウンロードする場合、複数のダウンロード リクエストを管理する必要があります。 cURL 拡張機能を使用すると、複数の cURL ハンドルの配列を作成できます。各ハンドルはダウンロード リクエストに対応します。
2.2 ダウンロード オプションの設定
cURL ハンドルを作成するとき、URL、タイムアウト、リクエスト ヘッダーなどのいくつかのオプションを設定できます。ダウンロード オプションを設定したら、ダウンロード リクエストを送信できます。
2.3 ダウンロード応答の処理
サーバーがダウンロード要求に応答すると、コールバック関数を登録することでダウンロードされたデータを処理できます。 cURL 拡張機能には CURLOPT_WRITEFUNCTION
オプションが用意されており、応答データを処理するコールバック関数を指定できます。
<?php // 创建cURL多个句柄数组 $curlHandles = array(); // 创建多个下载请求 $urls = array( "http://example.com/file1", "http://example.com/file2", "http://example.com/file3" ); foreach ($urls as $url) { $handle = curl_init($url); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); curl_setopt($handle, CURLOPT_WRITEFUNCTION, function($handle, $data) { // 处理下载数据 // ... return strlen($data); }); $curlHandles[] = $handle; } // 初始化多个cURL批处理句柄 $mh = curl_multi_init(); // 添加多个cURL句柄到批处理句柄中 foreach ($curlHandles as $handle) { curl_multi_add_handle($mh, $handle); } // 执行多个下载请求 $runningHandles = null; do { $status = curl_multi_exec($mh, $runningHandles); } while ($status === CURLM_CALL_MULTI_PERFORM || $runningHandles); // 关闭多个cURL句柄 foreach ($curlHandles as $handle) { curl_multi_remove_handle($mh, $handle); curl_close($handle); } // 关闭cURL批处理句柄 curl_multi_close($mh);
以上が高度なスキル: 複数のファイルの PHP 非同期 HTTP ダウンロードの開発経験の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。