phpのcurl_multiシリーズ関数の使用例
多くの人がphpマニュアルでは不明瞭なcurl_multiシリーズ関数に頭を悩ませていると思います。ドキュメントはほとんどなく、与えられた例は非常に単純なので理解できません。私もそれらから学びました。完全なアプリケーション例が記載されていない Web ページもたくさんあります。
- curl_multi_add_handle
- curl_multi_close
- curl_multi_exec
- curl_multi_getcontent
- curl_multi_info_read
- curl_multi_init
- curl_multi_remove_handle
- curl_multi_select
一般的に、これらの関数の使用を考えるとき、その目的は明らかに、複数の URL を 1 つずつリクエストするのではなく、同時にリクエストすることである必要があります。それ以外の場合は、curl_exec を自分でループして調整することをお勧めします。
手順は次のように要約されます:
ステップ 1:curl_multi_init を呼び出す
ステップ2: ループ内でcurl_multi_add_handleを呼び出す
この手順で注意する必要があるのは、curl_multi_add_handle の 2 番目のパラメータがcurl_init のサブハンドルであることです。
ステップ 3: 引き続き、curl_multi_exec の呼び出しを行います
ステップ4: 必要に応じてループ内でcurl_multi_getcontentを呼び出し、結果を取得します
ステップ 5: 単語ハンドルごとにcurl_multi_remove_handleを呼び出し、curl_closeを呼び出します
ステップ 6:curl_multi_close を呼び出す
これは、オンラインで見つかった簡単な例で、著者はこれをダーティ サンプルと呼んでいます (なぜダーティなのかについては後ほど説明します):
/*
これは、PHP 5.0.0RC1 CLI / FreeBSD 5.2.1 でテストされた、PHP からのカールマルチの簡単で汚い例です
*/
$connomains = array(
"http://www.baidu.com/"、
「http://www.google.com/」、
「http://www.jb51.net/」
);
$mh =curl_multi_init();
foreach ($connomains as $i => $url) {
$conn[$i]=curl_init($url);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);
curl_multi_add_handle ($mh,$conn[$i]);
}
do { $n=curl_multi_exec($mh,$active) } while ($active);
foreach ($connomains as $i => $url) {
$res[$i]=curl_multi_getcontent($conn[$i]);
curl_close($conn[$i]);
}
print_r($res);
全体の使用プロセスはほぼ次のとおりですが、この単純なコードには致命的な弱点があります。つまり、do ループで URL リクエスト全体が無限ループになり、CPU が 100% を占有してしまう可能性があります。
ここでそれを改善しましょう。ここではほとんどドキュメントのない関数curl_multi_selectを使用する必要がありますが、Cのcurlライブラリにはselectの命令がありますが、PHPのインターフェイスと使用法はCのものとは確かに異なります。
上記の do 段落を次のように変更します。
やります{
$mrc =curl_multi_exec($mh,$active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active および $mrc == CURLM_OK) {
If (curl_multi_select($mh) != -1) {
やります{
}
$active は false になる前にすべての URL データが受信されるまで待機する必要があるため、ここでは、curl_multi_exec の戻り値を使用してデータが存在するかどうかを判断します。データが存在する場合は、curl_multi_exec が継続的に呼び出されます。新しいデータが到着するとすぐに起動して実行を続行できます。この場合の利点は、CPU を不必要に消費しないことです。
また: 時々遭遇するかもしれないいくつかの詳細があります:
各リクエストのタイムアウトを制御します。curl_multi_add_handle の前に、curl_setopt を通じて実行します。
コードは次のとおりです:タイムアウトまたはその他のエラーがあるかどうかを判断するには、curl_multi_getcontent の前に、curl_error($conn[$i]);
を使用します。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1
使いやすく無料のコードエディター

WebStorm Mac版
便利なJavaScript開発ツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
