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

php - What can bottle neck cURL's mult functions in PHP?

Using cURL_multi is great for simultaneous connections, but what can limit the number of connections? I ask because when doing over 500 some of them seem to randomly fail to connect. I am doing HEAD requests with a timeout of 5, and increasing the timeout to 10 didn't seem to help. Any ideas?

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

php - curl_multi_selectとcurl_multi_info_readが互いに矛盾しているのはなぜですか?

以下のコードを実行すると、それは私には思え、curl_multi_select互いにcurl_multi_info_read矛盾しています。私が理解しているように、それcurl_multi_selectは応答があるまでブロックすることになってcurl_multi_execいますが、実際にそれが起こるのを見たことがありません。

これは戻ります

それ自体と矛盾しているようです。どうすれば準備ができてメッセージが表示されないのでしょうか。

私が使用しているphpのバージョンは5.3.9です

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

php - curl_multi_select() を使用しない PHP curl_multi_exec() の例?

curl_multi_select () なしでcurl_multi_exec ()を使用する例はありますか? 私たちのサーバーの1つは、PHP5.1.xでCentos5をまだ使用しています。

また、この例では、全員が終了する前にハンドルを処理できるようにする必要があります。

私の実装では、Content-Length パラメータがなく、リクエスト ボディがバッファ サイズ (16k) を超えているサイトで問題が発生します。サーバーからの Content-Length がない場合、curl_getinfo ()['download_content_length'] は常に -1 です。

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

php - curl_multi_select は常にタイムアウト値をブロックします

Windows XP PHP 5.3.5 でPHP から例 #1 を実行すると、指定されたタイムアウトの間、curl_multi_select()行は常にブロックされます (空白の場合は 1 秒間ブロックされ、5 秒のタイムアウトを指定すると 5 秒間ブロックされます)。コンテンツを取得するのにかかる時間。このバグに関連していると思われます。

問題は次のとおりです。最善の回避策は何ですか? 私が思いつく最善の方法は、いくつかのサイクルを節約する方法として、curl_multi_select()およびを取り除くことです。usleep(x)

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

php - PHP:ParallelcURLのパフォーマンス-RollingCurlとParallelCurl

処理するcURLリクエストが大量にあります。それらを並列処理するのに役立つことがわかったライブラリがいくつかあります。主なものはRollingCurl(http://code.google.com/p/rolling-curl/)とParallel Curl(https://github.com/ )です。 petewarden / ParallelCurl)。

誰かがこれらのライブラリの経験がありますか?もしそうなら、どちらがより良いパフォーマンスを発揮するか知っていますか?

ありがとう!

更新:後でこれに遭遇する可能性のある人にとって、Rolling Curlのグループ機能を使用している場合、多数のリクエスト(50k以上)を処理すると壊れるように見えます

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

php - 応答を待っている多数の CURL 要求を使用すると、CPU の使用率が高くなるのはなぜですか?

自分のサーバーと他のサーバーへの curl と multi-curl リクエストの両方を使用する大きな php スクリプトがあります。それに加えて、自分のサーバーで多くのデータベース要求やその他の操作を行います。

スクリプトは大きすぎてここに置くことができません。

スクリプト全体で時間を測定しました。自社サーバーでの運用と外部サーバーでの運用にかかる時間を区別しました。

自分のサーバーでのすべての操作の経過時間を合計すると、0.5 秒以上かかることはないようです。したがって、自分のスクリプトはサーバーにとって重くないと思います。合計経過時間は平均 25 秒です。

ほとんどの場合: サーバーが外部サーバーからの応答を待っている時間は 24.5 秒です。私のサーバーは約 300 の curl リクエストを作成しますが、curl リクエスト自体はそれほど重くありません。

問題: スクリプトを実行すると、CPU が 95% になり、このスクリプトが実行されている限り、サーバーは (ほとんど) 他の要求に応答しません。

これは、マルチカール リクエストの例です。

httpd.conf:

私の質問: 過負荷を防ぐためにサーバーをより適切に構成するにはどうすればよいですか?

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

php - curl-multi からデータを返さずに CPU 使用率を減らす方法は?

マルチカールを使用するスクリプトがphpにあります。

一般的なマルチカール リクエストは、50 個の個々のカール ハンドルで構成されます。各リクエストが返されるまでに時間がかかるため、スクリプトはリモート サーバーでの処理が完了するまで待機する必要があります。

これらの 50 のリクエストのそれぞれが、必要のない大量のデータ (コンテンツ) を返します。したがって、返されたデータを無視する方が効率的です。ただし、リモート サーバーでの処理が終了したとき、つまりデータが返されたときを知る必要があります。

データを使用する必要はないが、要求を行う必要がある理由は、リモート サーバーがデータベースにデータを配置し、その後、自分のサーバーからデータを取得するためです。したがって、基本的にはこのリクエストを行うだけでよく、リモート サーバー上のスクリプトがいつ終了するかを知る必要があります。

私の質問: このリクエストは多くの CPU を消費しています。どうすれば効率化できますか?

コード:

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

php - PHP - 特定の時点ですべての curl_multi リクエストを停止する

curl_multi を使用して複数のリクエストを同時に行う PHP スクリプトがあります。

定義された値を検索して、私のサイトのいくつかにアクセスします。

今私が抱えている問題は、サイトの1つで探している値が見つかった場合、curlリクエストが停止することです。

たとえば、stackoverflow という単語の 1000 ページを解析するとします。スクリプトは、curl_multi と一度に 10 個のリクエストでこれらのページにアクセスします。スクリプトが 589 ページ目に stackoverflow という単語を見つけたとしましょう。それ以降のすべてのリクエストをここで停止する必要があります。

それはどういうわけか可能ですか?

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

php - cron-multi の開始中のリンク切れチェック

このコードは、複数の cron を開始して、ページの壊れたリンクをチェックします。ただし、破損している正しいリンクを特定していません。ページで利用可能な壊れたリンクがありますが、常に 0 個の壊れたリンクを返します。$url_list は、ページのリンクの配列です。

ありがとう。

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

php - 空の配列を返すcurl_multi_exec

次の関数を使用して、非同期のカール投稿を作成しています。

多くの場合、最初の URL からの結果のみが返されるか、まったく結果が返されないことに気付きました。私はこの関数の約 100 の構成をいじりました。結果は空の配列で、curl_error($curl_arr[$i]) は空なので、どこから問題を探し始めればよいかわかりません。通常のカールを連続して行うと正常に動作するため、URLが正しいことはわかっています。