私はCURLで最初にコールして約2-3分かかるデータを取得する外部スクリプトを呼び出す必要があります。 CURLを使用して他の外部呼び出しを行い、最初の呼び出しの進行状況を取得します。しかし問題は、最初のCURLの返信が来るまで待つことです。私もcurl_multiをチェックしましたが、それは最初の呼び出しが進行中のときにたくさんの呼び出しをしたいので、それは私を助けていません。だから誰でも私がそれを解決するのを助けることができます。他のカールコールがPHPで既に進行中のときに他のカールを実行する
答えて
私は、CURLを追跡するために2回目の呼び出しをする必要がないと仮定進捗。 CURLオプションCURLOPT_PROGRESSFUNCTION
をコールバック関数とともに使用することで、同じ結果を得ることができます。
コールバックメソッドは、5つの引数を取ります。
- cURLリソースを バイトの
- 数はこれまでにダウンロードしたことが予想バイトの
- 総数をダウンロードすることが予想バイトの
- 総数アップロード済み
- アップロードされたバイト数
コールバックメソッドでは、ダウンロード/アップロードされた割合を計算できます。以下に例を示します。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://stackoverflow.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progress');
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
$html = curl_exec($ch);
curl_close($ch);
function progress($resource,$download_size, $downloaded, $upload_size, $uploaded)
{
if($download_size > 0)
echo $downloaded/$download_size * 100 . "%\n";
sleep(1);
}
はこれを行う方法があります - 以下のリンクを参照してください、彼らはこの使用curl_multi_initを行う方法について説明しますphp.net curl_multi_initとhttp://arguments.callee.info/2010/02/21/multiple-curl-requests-with-php/
あなたは正しく表示されますが、これは違います。私の場合。ここでは、すべてのリクエストをまとめてコールカールを追加します。しかし、私の場合、私は最初のカールを時間を要するアヤックスで呼ぶ必要があり、この間に、応答インスタントを得ることができるアヤックスで他のカールを呼び出さなければならず、最初のコールが完了するのを待つべきではありません。だから私の場合は2 diffがあります。実際のところ問題であるコールが必要です。 –
まあ、PHPは実際には複数のスレッドを扱うようには設計されていません... –
PHPで行う方法は他にありません。 –
- 1. 他のコンピュータにSQLデータベースを実行中
- 2. アプリが他のタスクを実行中にキーボードフックがフリーズする
- 3. 他のシステムでJDBCアプリケーションを実行中
- 4. 角度適用が既に進行中
- 5. ダウンロード中にPHP/Curlが進行する
- 6. 実行中の場合その他
- 7. TDDの実行中に他のオブジェクトを発見する
- 8. コードの実行中に他の入力を無視する
- 9. IF文を実行して他のコードに進む方法
- 10. 実行中のアクティビティをJavaのアンドロイドで実行中の進行中に無効にする方法
- 11. ケーキのPHPプロジェクトがルートにあるとき、他のPHPファイルを実行するには?
- 12. Java:他のプロセスを実行中にソケットからリスンする
- 13. JavaスイングJFrameが実行中に他のJframeに影を落とす
- 14. 既に実行中のAVDのアンドロイドプロジェクトを実行中
- 15. Visual Basicで他の実行中のプロセスをダンプする
- 16. 他のアプリケーションの中でweb.pyサーバを実行する方法
- 17. 既存のサーバでCloudifyや他のオープンソースのPaaSを実行できますか?
- 18. 実行中の他のアプリケーションに切り替える方法
- 19. WCFの実行中に進行状況が更新される
- 20. 他のjavascriptをWordPressで実行した後にjavascriptを実行
- 21. コミットボタンとその他のオブジェクトがマクロの実行中に表示されない
- 22. cronで実行しているときにカールがクラッシュする
- 23. 他のモニタでコンソールアプリケーションを実行する
- 24. 他のPCでJarを実行する
- 25. onScrollイベントでAngularJS $ digestが既に進行中です
- 26. PHPや他の何かでタイムリミット関数を実行する
- 27. 既に実行中のシェルでerlangシェルコマンドを実行コンソール
- 28. 既に実行中のC#プロセス内でC#WPFアプリケーションを実行
- 29. 他のすべてのhttpClient実行は、実行前に他の失敗実行が最初に失敗するのを待つ必要がありますか?
- 30. 他のプロセスがテーブルをロックしているときにRebusの実行を中断する方法
申し訳ありませんが、これは何かdiffです。これは私がしたいカールの進歩ではない、私は最初のカルは私が確かに2番目の呼び出しを行う必要が表示するためにパーセンテージが必要な何かのための計算を行いたいです。それで私はそれを行うことができる方法はありますか? –
こんにちは@Dileep私はあなたに尋ねたアプローチを試みましたが、今では同様のタイプの問題に遭遇しました。ここで私はセッション内の進行状況を格納し、他のajax呼び出しではフェッチしようとしましたが、他のajaxコールは、Curlコール全体が終了するまでハングします。これに対する解決策はありますか? –
こんにちは@Savan ajaxベースの進捗状況の監視については、http://www.binarytides.com/ajax-based-streaming-without-polling/で説明しています。リクエストの進行状況を示すために、送信された要求は1つだけであり、出力はチャンクされています。この場合、コールバックメソッドはチャンク出力を生成します。 –