問題タブ [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.
php - PHP curl_multi を使用した非同期/並列 HTTP リクエスト
最近、curl で複数のリクエストを行う可能性を調べました。私はそれを完全には理解していないかもしれないので、いくつかの概念を明確にしたいと思っています。
複数のソースからコンテンツを取得している場合、これは間違いなく良いオプションです。そうすれば、低速サーバーを待機しながら、高速サーバーからの結果の処理を開始できます。同じサーバーから複数のページをリクエストしている場合でも、それを使用する意味はありますか? サーバーは、同じクライアントに対して一度に複数のページを提供しますか?
php - PHP で shell_exec と proc_open に代わるものはありますか?
共有サーバーでshell_exec
orを使用できないようです。proc_open
使用しようとすると、次のメッセージが表示されます。
警告: shell_exec() はセキュリティ上の理由から、/home/georgee/public_html/admin/email.php の 4 行目で無効になっています
これらの機能に代わるものはありますか?
php - file_get_contents() のより高速な代替手段
現在、file_get_contents() を使用して GET データをサイトの配列に送信していますが、ページを実行すると次のエラーが発生します。
致命的なエラー: 最大実行時間の 30 秒を超えました
私が本当にスクリプトに実行させたいのは、Web ページの読み込みを開始してから終了することだけです。各 Web ページが完全に読み込まれるまで最大 5 分かかる場合がありますが、完全に読み込む必要はありません。
これが私が現在持っているものです:
編集:混乱を避けるために、このスクリプトは、データを返さない他のサーバーでスクリプトを開始するために使用されています。
編集:私は今、cURL を使用してトリックを実行しようとしています。タイムアウトを 1 秒に設定して、データを送信してから停止します。これが私のコードです:
オプションの設定を間違えたのかもしれません。私たちが話している間、私はいくつかのマニュアルに目を通しています。最新情報をお届けします。これまで私を助けてくれた皆さんに感謝します。
編集:ああ、問題が見つかりました。CURLOPT_TIMEOUT の代わりに CURLOPT_CONNECTTIMEOUT を使用していました。おっと。
ただし、現在、スクリプトはトリガーされていません。それぞれが ignore_user_abort(TRUE); を使用します。だから問題が理解できない
はぁ、スクラッチ。今すぐ動作します。どうもありがとう
php - cURL を使用して複数の URL を PHP で同時に開くにはどうすればよいですか?
これが私の現在のコードです:
私はcURLに比較的慣れていません。比較的新しいということは、cURL を使用するのはこれが初めてということです。現在、1 つを 2 秒間ロードしてから、次の 1 つを 2 秒間ロードしてから、次の 1 つをロードします。ただし、それらすべてを同時にロードしたいと考えています。私はそれが可能であると確信しています、私は方法について確信が持てません。誰かが私を正しい方向に向けることができれば、私はそれを感謝します.
php - cURL を使用して複数の URL に同時に GET データを送信するにはどうすればよいですか?
申し訳ありませんが、実際にこの質問を何度もしましたが、答えを完全に理解することはできませんでした.
これが私の現在のコードです:
私がここで行っているのは、MySQL データベース ($resultSet['url']) から URL を取得し、そこに追加の変数をいくつか追加し、GET データ ($fullcurl) だけを追加して、ページをリクエストするだけです。これにより、これらのページでスクリプトの実行が開始されます。このスクリプトが実行する必要があるのは、これらのスクリプトを開始することだけです。出力を返す必要はありません。スクリプトを開始するのに十分な長さでページをロードするだけです。
ただし、現在は各 URL (現在 11 個) を 1 つずつ読み込んでいます。それらすべてを同時にロードする必要があります。curl_multi_ を使用する必要があることは理解していますが、cURL 関数がどのように機能するかについてはまったくわかりません。そのため、while ループでcurl_multi_ を使用するようにコードを変更する方法がわかりません。
だから私の質問は:
このコードを変更して、すべての URL を同時にロードするにはどうすればよいですか? コードだけでなく、説明してください。個々の機能が正確に何をするのか知りたいです。while ループは各行を 1 つずつ送信するだけなので、curl_multi_exec は while ループでも機能しますか?
もちろん、cURL 関数に関するリファレンス、ガイド、チュートリアルも同様に役立ちます。できればphp.netからはそれほど多くはありません.構文を教えてくれるのは良い仕事ですが、少し乾いていて説明があまり得意ではありません.
編集:わかりましたzaf、これが現在の私の現在のコードです:
php - 1 つの URL が 404 の場合、curl_multi_exec が停止します。これを変更するにはどうすればよいですか?
現在、接続先の 1 つの URL が機能しない場合、cURL マルチ exec が停止するため、いくつか質問があります。
1: どうして止まるの? それは私には意味がありません。
2: どうすれば継続できますか?
編集:ここに私のコードがあります:
ruby-on-rails - 複数の HTTP リクエスト - Rails
私のアプリケーションは、いくつかのドメインをチェックして、それらが有効かどうかを確認します (約 100)。単一のドメインをチェックする次のコードがあります。
このコードは、リダイレクトを考慮しながら応答コードをチェックします。これはうまくいきます。私が抱えている唯一の問題は、これをループに入れたときに、並行して実行したいということです。そのため、ドメイン 2 をリクエストする前にドメイン 1 の応答を待つ必要はありません。
curl_multi を使用して PHP でこれを管理し、リクエストを並行して実行しました。Railsでできる同様のことはありますか?
php - PHPで大量のページをスクレイピングする最速の方法は何ですか?
私は、いくつかのサイトをスクレイピングし、ユーザーが検索できるようにそれらの情報をインデックス化することに依存するデータ アグリゲーターを持っています。
毎日膨大な数のページをスクレイピングできるようにする必要があり、単純なカールリクエストを使用して問題に遭遇しました。これは、長時間連続して実行するとかなり遅くなります (スクレイパーは基本的に 24 時間年中無休で実行されます)。
単純な while ループでマルチ カール リクエストを実行すると、かなり時間がかかります。バックグラウンド プロセスで個々の curl リクエストを実行することで高速化しましたが、遅かれ早かれ遅いリクエストが積み重なってサーバーがクラッシュします。
データをスクレイピングするより効率的な方法はありますか? おそらくコマンドラインカール?
php - curl_multi_exec を何回呼び出す必要がありますか?
マルチでcurl_multiを使用して、ファイルを異なるサーバーにアップロードしています。各サーバーにはアップロードが必要な複数のファイルがあるため、サーバーごとに curl_multi 要求があります。curl_multi ハンドルを実行するときは、次のように、同じループですべての curl_multi ハンドルを実行するだけです。
私が疑問に思っているのは、curl リクエストで実際に curl_multi_exec を何回呼び出す必要があるかということです。転送されるデータの小さなビットごとに呼び出す必要がありますか? 多くのCPUを使用していますが、「ビジーループ」が多すぎるためだと思います。それで、sleep(5); を追加できますか? 各ループの最後に使用する CPU サイクルを少なくするか、またはこれによりリクエストが大幅に遅くなりますか?
curl_multi_select を使用しますが、複数の curl_multi_exec が処理されているため使用できません。
php - PHP - 404/タイムアウトの URL をチェックする方法は?
これが私の構造です:
MYSQL: テーブル: おもちゃ ---> 列: id、URL。PHP スクリプトでこれらすべての URL をチェックして、URL が有効かどうか、またはページ 404 があるかどうかを確認するにはどうすればよいですか? ページに結果をエコーしたり表示したりしないようにしてください。追加の列「チェック」を使用して MYSQL に記録する必要があります。
結果は次の形式になります。
http://asdasd.adas --- アップ --- 404
可能であれば、PHP/Curl になります。私は何年も努力してきました。諦めたのでここで質問することにしました。
URL はすべて私のデータベースにあります。