2011-06-21 53 views
5

有沒有辦法檢查curl命令的狀態?說,我打電話來從PHP curl,使用exec來啓動它。有沒有辦法在運行時檢查它的進度?或者我必須等待它完成?cURL檢查進度

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

回答

4

您可以定義一個進度功能:

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

一個回調函數,其中 回調函數有三個參數 的名稱。第一個是cURL 資源,第二個是 文件描述符資源,第三個是文件描述符資源,長度是 。返回包含數據的字符串 。

欲瞭解更多信息,請參閱here

注意:This comment糾紛PHP自己的功能簽名。

不能使用exec(),因爲它是一個阻塞函數。它將等待,直到手頭的節目已經結束。
編輯:哦,我知道你已經使用的符號,請不要介意

什麼你可能用途是popen(),但除非有捲曲輸出的進度的一個很好的方式,這不會是漂亮。

我建議將-#作爲參數傳遞給curl,這樣你就可以很好地從輸出流中獲取進度。

+0

但是,這是否適用於通過exec異步調用的捲曲命令? – Nathan

+0

Exec不會將該命令的塊作爲&運行的作業。但是,你不會得到任何輸出。 – datasage

+1

不,這將通過'curl_init()'和'curl_exec()'工作。 @datasage:是的,我只是在最後的編輯中注意到並糾正了這一點。但是,'popen()'或'proc_open()'會更漂亮,因爲你可以直接獲得流出的流處理。 – phant0m