問題タブ [curl-multi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1025 参照

php - PHPcURLマルチハンドル変更オプション

いくつかのオプションを変更して他のリソースを削除すると、同じマルチハンドルを使用できません。

そうですか:

見たい:

このFAQに同意する

転送後、ハンドルに新しいオプションを設定して、別の転送を行うだけです。これにより、可能であればlibcurlが同じ接続を再利用できるようになります。

私を助けることができますか?

ありがとう

0 投票する
1 に答える
843 参照

php - PHP Web アプリケーションでの複数のアウトバウンド API 呼び出しの処理

私は、ユーザーの要求ごとに、外部 API (HTTP 経由の SOAP および/または REST) に複数の呼び出しを行う PHP (Zend Framework) Web アプリケーションに取り組んでいます。

現時点では、API 呼び出しはシーケンシャルです。

  • API A を呼び出し、結果が出るまで約 1 秒待ちます
  • API B を呼び出し、結果が出るまで約 1 秒待ちます
  • ページをユーザーに送り返す

この場合、API A と B の間に依存関係や関係はありません。できるだけ早くすべての情報を含むページに戻りたいだけです。

現時点では、次のいずれかを考えています。

curl_multi_exec() は、API A と B のクライアント コードを、思った以上にきつくバインドしてしまいます。

ZeroMQ は実装がより複雑なようで、ワーカー プロセスとソケットをどのように管理すればよいかわかりません。

PHP/Apache アプリケーションで、大騒ぎせずにこの動作をうまく実装した人はいますか?

0 投票する
2 に答える
1601 参照

php - curl_exec: 実行時間の長い HTTP リクエストをキャンセルするには?

PHP の curl_exec() を使用して、実行時間が非常に長い API にリクエストを送信しています。しかし、実際に結果を知る必要はありません。必要なのはプロセスを開始することだけです。

プロセスが成功するか失敗するかは私には関係ありません。そのため、リクエストを行ったらすぐに接続を切断したいと考えています。

curl_exec 接続をドロップするにはどうすればよいですか? 応答を 30 ~ 60 秒待ちたくありません。

ソリューションにはおそらくcurl_multiが含まれると思いますか?

0 投票する
2 に答える
1789 参照

php - PHP マルチカールまたはマルチスレッド

次のことを行う cron ジョブを構築しています。
1. DB からレコードを取得します
。 2. レコードごとに、API への curl リクエストを起動します。(リクエストによっては迅速なものもあれば、大きな画像や動画をアップロードするものもあります)。
3. リクエストが成功しない場合は、わずかに異なるパラメーター (引き続きレコードに基づく) を使用して新しいリクエストを作成し、再度送信します。これは数回発生する可能性があります。
4. 要求が成功したら、DB の選択/挿入を実行します (この要求を送信する原因となった元のレコードに基づいて)。

リクエストの送信は、数分かかるもの (大規模なアップロード) と非常に速いものがあるため、並行して行う必要があります。

これを行うには何が最も適切でしょうか? DB からレコードを取得し、API の呼び出しと応答の解析を処理するための各レコードのプロセスを作成するマスター スクリプトを使用しますか? または、curl_multi を使用して、同じスクリプトから同時に複数の要求を送信し、返されるたびにそれぞれを解析しますか?

複数のプロセスを使用する場合、これを行うための最良の方法は何ですか? PCNTRL、popen など?
curl_multi を使用している場合、どの DB レコードがどの戻り要求に対応するかをどのように知ることができますか?

編集:カールマルチを使用している場合、おそらくこのテクニックを使用します: http ://www.onlineaspect.com/2009/01/26/how-to-use-curl_multi-without-blocking/
応答の処理を開始する前に、すべての要求を完了する必要があります。

ありがとう!

0 投票する
1 に答える
4115 参照

php - チェーン内の複数のプロキシを使用するcURL

cURLを使用して1つのリクエストで複数のプロキシをチェーンすることは可能ですか?

例:start cURL-> proxy1-> proxy2-> destination address

これはcURLを使用して実現できますか?

0 投票する
1 に答える
888 参照

php - curl_multi_exec の制限を示す設定はありますか?

curl_multi_exec で実行できる最大のカールを示す構成または設定があるかどうかはわかりません


論理的には、CPU 使用率とネットワーク帯域幅を犠牲にして、好きなだけスタックアップできます。

インサイダーのヒントはありますか?

0 投票する
1 に答える
530 参照

php - タイムアウト > 2 の場合、要求は常に*少なくとも 1 秒かかります

わかりました、これは本当に奇妙です。ローカルホストにリクエストを送信すると (約 1 ~ 2 ミリ秒かかります)、curl にさらに時間がかかります。タイムアウト(ConnectionTimeout/normaltimeoutの最低値)に依存しているようです。

すべてのリクエストが成功する

  • Timeout_Ms = 5 の場合、curl が復帰するまでの時間は約 1 Ms です。
  • Timeout_Ms = 50 の場合、curl が復帰するまでの時間は約 4 Ms です。
  • Timeout_Ms = 500 の場合、curl が復帰するまでの時間は約 250 Ms です。
  • Timeout_Ms = 1000 の場合、curl が復帰するまでの時間は約 500 Ms です。
  • Timeout_Ms = 1500 の場合、curl が復帰するまでの時間は約 750 Ms です。
  • Timeout_Ms > 2000 の場合、curl が復帰するまでの時間は約 1000 Ms です。

そのため、タイムアウトを高く設定すると、リクエストに常に 1 秒かかります。curl_multi を使用すると、時間も 1 秒追加されますが、リクエストの数は関係ありません。

2 つのリクエストがあります。

  • 5秒かかります -> 6秒後に終了
  • 2 番目は 10 秒かかります -> 11 秒後に終了します
0 投票する
1 に答える
1216 参照

php - パスワード付きサイトのPHPcurlmulti

私は現在、次の(古い)コードを使用してサイトにログインしています...

次に使用します...

...ページリクエストごと。私の質問は、これをcurl_multi_execを使用して数百のルックアップを高速化するように変換するにはどうすればよいですか?curl_multiWITHloginの例が見つかりません。すべてのcurl_execをcurl_multi_execに置き換えるだけですか?また、他に明白な間違いを見つけた場合は、コメントを歓迎します。

明確にするために、単一のユーザー/パスでログインしてから、それらの資格情報を複数のページ要求に再利用したいと思います。

0 投票する
1 に答える
1497 参照

php - PHP curl_multi を使用した個々の応答時間

curl_multi を使用して各プロセスの応答時間を記録することは可能ですか? 現在使用しているコードは次のとおりです。各プロセスの応答時間を記録する方法がわかりません。助けてくれてありがとう!

0 投票する
2 に答える
7103 参照

php - curl_errnoは6ではなく0を返します

出力

同じ状況で、curl_errorがエラーメッセージを返すという事実にもかかわらず、multicurlはcurl_errno関数で0を返します。