問題タブ [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 に答える
4596 参照

php - curl_multi_exec で失敗した URL を知るには?

複数の cURL リクエストを使いやすくするためのクラスを作成しました。404 エラーまたはその他のエラーが発生したときにエラーをログに記録したいと考えています。私はすでにCURLOPT_FAILONERRORtrueに設定しています。

私は現在使用していcurl_multi_info_read()ます。

これは私のコードです:

エラーの結果は、次のような配列になります。

では、エラーが発生した URL を取得するにはどうすればよいでしょうか。これは私にハンドルリソースIDを与えるだけです

事前に感謝します。

0 投票する
3 に答える
2231 参照

php - 10回のリクエスト後に遅延を設定するPHP cURL

PHP と cURL を使用して、単一の Web サイト ページの html をスクレイピングしています。実験の結果、自分のコードは で 10 個以下の URL を指定した場合にのみ機能することがわかりました$nodes array(コード サンプルを参照)。一度に約 100 ページをスクレイピングし、ソース コードをファイルに保存する必要があります。これは、cURLS 組み込み関数の 1 つを使用して実現できますか?

現時点で使用しているコードは次のとおりです。

前もって感謝します

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

php - PHP を使用した WSDL からの応答の解析

SOAPレスポンスとその種類に詳しくないので、タイトルを間違えていたら大変申し訳ありません。しかし、それは WSDL 応答だと思います。少なくとも、WSDL リンクから取得しました...

次のURLがあります http://somedomain.com/j.svc?wsdl

そして、curl_multi を使用してリクエストを行った後、次のレスポンスが返ってきました。読みやすくするため、応答は 2 つの結果に短縮されました

応答は次のとおりです。

PHP を使用して結果を解析する機会はありますか? 私はStackOverflowを含む多くの検索を行い、ここで私が見つけたものを見つけました.

上記の応答を解析するには、次のコードを使用できます。

上記の PHP コード片は部分的に正しいようです。「Journey」の正しい量を取得しますが、$item 自体は空です。

解決策はありますか?SoapClient を使用して結果を取得することはお勧めしません。curl_multi から移動できません。私はすでに結果を持っており、それを解析する必要があります。前もって感謝します

0 投票する
0 に答える
605 参照

php - PHP & curl_multi および CURLOPT_FILE = ファイル コンテンツなし

CURLOPT_FILE (コンテンツをファイルに送信する) を使用して呼び出しを並行して処理する場合 (curl_mult_exec を使用)、ファイルのコンテンツが小さい場合 (正確なサイズは不明ですが、この場合は 100 ~ 300 バイト) は常に 0 です。

呼び出しが終了したら、内容を書き込むためにファイルで fclose() を呼び出す必要があります。

通常の curl_exec を使用すると、内容は適切に書き込まれます。ubuntuでPHP 5.3.10を使用しています。

これはバグですか、予想される動作ですか? 私はこれをオンラインで囲むものを見つけることができません

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

php - Web クローラー用に PHP CURL を最適化する

curl を使用して PHP ベースのクローラーをコーディングしようとしています。クロールする必要がある 20,000 ~ 30,000 の URL のデータベースがあります。curl を呼び出して Web ページをフェッチするたびに、約 4 ~ 5 秒かかります。

これを最適化し、ページのフェッチに必要な時間を短縮するにはどうすればよいですか?

0 投票する
0 に答える
728 参照

php - curl_multi_exec - 1 つの呼び出しが完了したらすべての呼び出しを停止する

1 つが正常に完了したときに、curl_multi で実行中のすべての呼び出しをキャンセルすることは可能ですか? curl_multi はスクリプトを終了する前にすべてのプロセスが終了するまで待機しているように見えますが、これは私の個人的な認識である可能性があります。多くの接続が開いている単一の URL を呼び出そうとしています。URL は要求をできるだけ速く処理し、最初の要求が戻ってきたら、残りの接続を閉じて、残りの呼び出しスクリプトを続行します。

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

php - PHP: RollingCurl ライブラリで保留中の curl_multi リクエストを強制終了する方法

http://code.google.com/p/rolling-curl/のわずかに変更されたバージョンを使用しています

私の質問はこれに似ています: http://code.google.com/p/rolling-curl/issues/detail?id=25

基本的に、私は一連のリクエストを実行しています。必要なリクエストが見つかったら、他のすべての保留中のリクエストをキューから終了し、実行中の CURL ハンドルは、ダウンロードが完了していなくてもメモリから削除する必要があります。

ここにコード:

編集:考え直して、2つの機能があるはずです:

1) キュー内のすべてのリクエストを削除し、完了せずにメモリからすべての curl リソースを設定解除します。

2) キュー内のすべてのリクエストを削除し、すべての curl リソースが終了するまで待ちます。

私はおそらく、ここで得た関数/コード/提案をプロジェクトに貢献し、選択した回答の作成者の功績を認めます。

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

php - cUrl を取得して、PHP で DIGEST 認証の Authorization ヘッダーをプリエンプティブに送信する

DIGEST 認証を使用して REST API を呼び出す PHP ページ (実際には WordPress プラグイン) があります。curl ハンドルは、認可クレデンシャルが与えられ、正常に認証されると、リクエストごとに作成されます。

問題:

内部では、Curl は 2 つのリクエストを送信しています。1 つ目は 401 とチャレンジで失敗し、2 つ目は Authorization ヘッダーを含んで成功します (200)

後続の API 呼び出しでは、cUrl は引き続き 2 つのリクエストを送信します。これは効率が悪いように思われ、2 倍のネットワーク遅延が操作の期間に追加されます。

cURL に将来のリクエストを「事前に認証」させるにはどうすればよいでしょうか(例)。

カール マルチにこの機能はありますか?

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

php - 複数のアウトバウンド CURL リクエストの増加

マルチ アウトバウンド リクエスト - Curl

ここに問題があります。アウトバウンド要求を CURL する必要があるクライアントがいくつかあります。たとえば、現在 20 のクライアントがあり、それぞれに毎分約 100 ~ 1000 のリクエストを送信しているとします。私も CURL multi を使用していますが、一度に作成できるリクエストの数に制限があるようで、ルーチン全体が完了するまでの最長の CURL レスポンスにも依存します。

たとえば、次のクライアントがあります。

... 等々

ここでの主な問題は、すべてのクライアントに対してジョブを実行する単一のスクリプトがあることです。言う、

... 等々

私がそれらを分離した理由は、クライアント間に専用の接続が必要であり、それらのレイテンシーが互いに異なるためです。一部のクライアントは応答が速く、サーバーが高速ですが、一部のクライアントはサーバーが低速であるか、到達するのに多くのホップが必要です。

これが私の質問です。このプロセスを簡素化する手段はありますか? データベースにクライアントを追加するたびに、クライアントも追加する必要があるのは面倒だからです。

cronjobs のリストに。クライアントのリストが大きくなっても、アウトバウンド CURL 機能の全体的なパフォーマンスに影響を与えないように、代わりに単一のスクリプトに入れることは可能ですか?

ちなみに私はPHP、CURLを使っています。これに PHP 以外の別のテクノロジ、Linux キューイング マネージャなどを使用することを推奨するソリューションがある場合は、ぜひ提案してください。

ありがとう!

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

php - curl_multi_exec() はブロッキング呼び出しですか?

curl_multi_exec()PHP での呼び出しがブロック呼び出しか非ブロック呼び出しかが気になりました。