カールコマンドの状態を確認する方法はありますか?さて、私はそれを開始するためにexecを使用して、PHPからカールするように呼び出している。実行中に進行状況を確認する方法はありますか?または、それが完了するのを待たなければならないのですか?cURLの進行状況を確認
exec( "curl $ url -k>/dev/null 2> ");
カールコマンドの状態を確認する方法はありますか?さて、私はそれを開始するためにexecを使用して、PHPからカールするように呼び出している。実行中に進行状況を確認する方法はありますか?または、それが完了するのを待たなければならないのですか?cURLの進行状況を確認
exec( "curl $ url -k>/dev/null 2> ");
あなたは進捗関数を定義することができます。
curl_setopt($curl, CURLOPT_PROGRESSFUNCTION, 'my_progress_handler');
コールバック関数は3つの のパラメータを受け取り、コールバック関数の名前を。最初はcURL リソース、2番目は ファイル記述子リソース、 は3番目の長さです。データを含む文字列 を返します。
詳細については、hereを参照してください。
注意:This comment注意:PHP独自の関数シグネチャ。
は、ブロック機能であるためexec()
を使用できません。手元にあるプログラムが終了するまで待機します。
編集:ああ、私はあなたがアンパサンドを使用していることがわかり、用事
何する使用がpopen()
である可能性がありますが、カールが進行を出力する良い方法を持っていない限り、これはかなりになるだろうされていません。
パラメータとして-#
をcurl
に渡すことをお勧めします。出力ストリームから進捗状況をうまくとらえることができます。
しかし、これはexecを介して非同期に呼び出されるcurlコマンドで機能しますか? – Nathan
Execは&を使用してジョブとして実行されるコマンドをブロックしません。しかし、出力はありません。 – datasage
いいえ、それは 'curl_init()'と 'curl_exec()'で動作します。 @datasage:はい、私はちょうど気づいて、最後の編集でそれを修正しました。しかし、 'popen()'や 'proc_open()'は、ストリームストリームのハンドルを直接取得するので、もっときれいになるでしょう。 – phant0m