2011-06-21 23 views
5

カールコマンドの状態を確認する方法はありますか?さて、私はそれを開始するためにexecを使用して、PHPからカールするように呼び出している。実行中に進行状況を確認する方法はありますか?または、それが完了するのを待たなければならないのですか?cURLの進行状況を確認

exec( "curl $ url -k>/dev/null 2> ");

答えて

4

あなたは進捗関数を定義することができます。

curl_setopt($curl, CURLOPT_PROGRESSFUNCTION, 'my_progress_handler'); 

コールバック関数は3つの のパラメータを受け取り、コールバック関数の名前を。最初はcURL リソース、2番目は ファイル記述子リソース、 は3番目の長さです。データを含む文字列 を返します。

詳細については、hereを参照してください。

注意:This comment注意:PHP独自の関数シグネチャ。

は、ブロック機能であるためexec()を使用できません。手元にあるプログラムが終了するまで待機します。
編集:ああ、私はあなたがアンパサンドを使用していることがわかり、用事

する使用がpopen()である可能性がありますが、カールが進行を出力する良い方法を持っていない限り、これはかなりになるだろうされていません。

パラメータとして-#curlに渡すことをお勧めします。出力ストリームから進捗状況をうまくとらえることができます。

+0

しかし、これはexecを介して非同期に呼び出されるcurlコマンドで機能しますか? – Nathan

+0

Execは&を使用してジョブとして実行されるコマンドをブロックしません。しかし、出力はありません。 – datasage

+1

いいえ、それは 'curl_init()'と 'curl_exec()'で動作します。 @datasage:はい、私はちょうど気づいて、最後の編集でそれを修正しました。しかし、 'popen()'や 'proc_open()'は、ストリームストリームのハンドルを直接取得するので、もっときれいになるでしょう。 – phant0m

関連する問題