「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP で cURL リクエストを非同期に実行するにはどうすればよいですか?

PHP で cURL リクエストを非同期に実行するにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:352

How Can I Execute cURL Requests Asynchronously in PHP?

PHP での非同期 Curl リクエスト

PHP で Curl Post リクエストを非同期に実行すると、パフォーマンスが向上し、潜在的な遅延を防ぐことができます。さまざまな方法を使用してこれを実現する方法は次のとおりです。

非同期 cURL 関数の使用

curl_multi_* を使用すると、複数の cURL リクエストを同時に実行できます。コード例は次のとおりです。

$curl = curl_init($request);
curl_setopt($curl, CURLOPT_URL, $url_onfleet);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_USERPWD, $api_onfleet);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_ENCODING, "");  
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, '{"destination":{"address":{"unparsed":"'.$pickup_address.'"},"notes":"'.$comments.'"},"recipients":[{"name":"'.$name.'","phone":" 61'.$phone.'","notes":"Number of riders: '.$riders.'"}],"completeBefore":'.$timestamp.',"pickupTask":"yes","autoAssign":{"mode":"distance"}}');

$mh = curl_multi_init();
curl_multi_add_handle($mh,$curl);

$active = null;
//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}
//close the handles
curl_multi_remove_handle($mh, $curl);
curl_multi_close($mh);

pThreads の使用

pThreads は、PHP のスレッド ライブラリです。これを非同期カールリクエストに使用する方法は次のとおりです。

class Request1 extends Thread {
    public function run() {
        // Execute the first cURL request here
    }
}

class Request2 extends Thread {
    public function run() {
        // Execute the second cURL request here
    }
}

$req1 = new Request1();
$req1->start();
$req2 = new Request2();
$req2->start();

どちらのメソッドでも、curl リクエストの非同期実行が可能になり、パフォーマンスの向上と並列タスクの効率的な処理が可能になります。

最新のチュートリアル もっと>
  • 同じ ID を持つ複数の要素に jQuery 関数を適用するにはどうすればよいですか?
    同じ ID を持つ複数の要素に jQuery 関数を適用するにはどうすればよいですか?
    jQuery を使用した同じ ID の要素へのアクセスHTML では、各要素に一意の ID が必要です。ただし、同じ ID を持つ複数の要素に jQuery 関数を適用する必要があるシナリオも考えられます。この記事では、そのような状況に対処する方法を検討します。提供されたコード スニペットによると、...
    プログラミング 2024 年 11 月 8 日に公開
  • パッケージとクラスパスの検索
    パッケージとクラスパスの検索
    ディレクトリごとのパッケージのミラーリング: Java パッケージは、ファイル システム上のディレクトリにマッピングされます。 Java ランタイムがパッケージを検索する 3 つの方法: 現在の作業ディレクトリ: ランタイム システムは、作業ディレクトリを開始点として使用します。パッケージが現在のデ...
    プログラミング 2024 年 11 月 8 日に公開
  • PHP の PATH_INFO とは何ですか? Apache ではどのように機能しますか?
    PHP の PATH_INFO とは何ですか? Apache ではどのように機能しますか?
    PHP の PATH_INFO: 謎の解明PATH_INFO 変数はさまざまなコンテキストで登場しますが、その本当の性質は依然としてとらえどころがありません。 PATH_INFO を明確に理解するには、その起源を詳しく調べる必要があります。Apache Web サーバーと PATH_INFOPATH...
    プログラミング 2024 年 11 月 8 日に公開
  • JavaScript でのメソッドのオーバーロード
    JavaScript でのメソッドのオーバーロード
    JavaScript、メソッドのオーバーロード (Java や C# などの言語と同様) は、関数の定義が 1 つだけであるため、直接サポートされていません。ただし、JavaScript は動的であるため、次のような手法を使用してオーバーロードを模倣することができます。 引数の数または型をチェックし...
    プログラミング 2024 年 11 月 8 日に公開
  • Linux 環境で pthread を使用してスレッド優先度を効果的に高めるにはどうすればよいですか?
    Linux 環境で pthread を使用してスレッド優先度を効果的に高めるにはどうすればよいですか?
    pthread でのスレッド優先度の強化: 総合ガイドLinux 環境で pthread を利用する場合、多くの場合、スレッド優先度を調整する必要があります。パフォーマンスを最適化します。このガイドでは、スレッド優先度の範囲と説明に関する不確実性、および優先度の設定が高すぎることに伴う潜在的なリスク...
    プログラミング 2024 年 11 月 8 日に公開
  • 初期の AI による単体テストの生成
    初期の AI による単体テストの生成
    単体テスト生成の高速化とコード品質の向上 最近、単体テストの自動生成用に設計された AI エージェントである Early について詳しく知る機会がありました。私は TypeScript と ExpressoTS Framework を定期的に使用する人間として、Early がどのよ...
    プログラミング 2024 年 11 月 8 日に公開
  • Java で文字配列を文字列に変換するにはどうすればよいですか?
    Java で文字配列を文字列に変換するにはどうすればよいですか?
    Char 配列から String への変換Java では、Char 配列を String コンストラクターを使用して変換して文字列に戻すことができます。次のコードは、この変換を実行する方法を示しています。char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', '...
    プログラミング 2024 年 11 月 8 日に公開
  • データ エンジニアリングの究極のガイド。
    データ エンジニアリングの究極のガイド。
    データ エンジニアリングは、大規模なデータを収集、保存、分析するためのシステムを設計および構築する実践です。これは幅広い分野であり、ほぼすべての業界に応用されています。この記事の目的は、データ エンジニアになる方法について段階的なガイドを提供することです。 ほとんどのデータ エンジニアは、コンピュー...
    プログラミング 2024 年 11 月 8 日に公開
  • React でブロードキャスト チャネル API を使用する方法
    React でブロードキャスト チャネル API を使用する方法
    今日の Web アプリケーションでは、複数のタブまたはウィンドウにわたって情報を最新の状態に保つことで、ユーザー エクスペリエンスを大幅に向上させることができます。たとえば、ユーザーが 1 つのタブでログアウトした場合、そのアクションを他のすべてのタブに反映したいとします。 ブロードキャスト チャネ...
    プログラミング 2024 年 11 月 8 日に公開
  • Pandas での連鎖割り当ては効率的ですか?
    Pandas での連鎖割り当ては効率的ですか?
    Pandas の連鎖代入はじめに人気のデータ操作ライブラリである Pandas の連鎖代入は、データ フレームの値に対して連続して実行される操作です。操作が適切に処理されないと、パフォーマンスの問題が発生する可能性があります。連鎖割り当ての警告Pandas は、連鎖割り当ての潜在的な非効率性を示すた...
    プログラミング 2024 年 11 月 8 日に公開
  • JavaScript の約束: 知っておくべき基本
    JavaScript の約束: 知っておくべき基本
    導入 JavaScript は シングルスレッド プログラミング言語です。つまり、一度に 1 つのタスクしか実行できません。データの取得やタイマーの設定などの非同期操作ではこれが難しくなり、実行フローがブロックされ、アプリの速度が低下する可能性があります。 スレッドをフリーズさせず...
    プログラミング 2024 年 11 月 8 日に公開
  • AngularJS ng-repeat データを 3 つのブートストラップ列に配置するにはどうすればよいですか?
    AngularJS ng-repeat データを 3 つのブートストラップ列に配置するにはどうすればよいですか?
    AngularJS ng-repeat データを 3 つのブートストラップ列に配置するAngularJS は、データの配列に基づいて要素を動的に作成する ng-repeat を提供します。非常に多くの要素を扱う場合、要素を列に配置すると、ユーザー インターフェイスと読みやすさが向上します。コントロー...
    プログラミング 2024 年 11 月 8 日に公開
  • Cypress でアップロードとダウンロードを検証する方法
    Cypress でアップロードとダウンロードを検証する方法
    導入 ファイルのアップロードとダウンロードの処理は、エンドツーエンド テストの一般的なシナリオです。この投稿では、Cypress を使用してファイルのアップロードとダウンロードの両方を処理する方法を検討します。 Cypress にはこれらの操作に対するサポートが組み込まれていません...
    プログラミング 2024 年 11 月 8 日に公開
  • スロットリングとデバウンス: どのレート制限手法をいつ使用するか?
    スロットリングとデバウンス: どのレート制限手法をいつ使用するか?
    レート制限関数のスロットルとデバウンスの区別ソフトウェア開発の領域では、関数呼び出しの頻度を管理することは、最適化のために重要です。パフォーマンスを向上させ、不必要なリソースの消費を防ぎます。スロットルとデバウンスは、レート制限機能に使用される 2 つの一般的な手法ですが、その微妙な違いを理解するの...
    プログラミング 2024 年 11 月 8 日に公開
  • 無料辞書APIの使い方
    無料辞書APIの使い方
    Christopher Gower による Unsplash のカバー写真 言語学習アプリ、ライティングアシスタント、または単語に関係するプロジェクトを開発していて、単語の意味を取得する API が必要ですか? Free Dictionary API は、言語データを作品に組み込むための無料でアク...
    プログラミング 2024 年 11 月 8 日に公開

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3