我必須調用外部腳本,在該腳本中,我使用CURL首次調用以獲取需要大約2-3分鐘的數據,現在在此期間,我需要使用CURL進行其他外部呼叫以獲取第一個呼叫的進度。但問題是我的下一個呼叫等到第一個CURL的回覆來。我也檢查了curl_multi,但這也沒有幫助我,因爲當第一個通話正在進行時,我想撥打很多電話。所以任何人都可以幫助我解決它。當另一個curl調用正在進行中時,運行其他curl PHP
回答
我想的是,沒有必要進行第二次調用跟蹤捲曲進展。您可以通過使用CURL選項CURLOPT_PROGRESSFUNCTION
和回調函數來達到相同效果。
的回調方法接受5個參數:
- 捲曲資源
- 預計將下載的下載
- 的字節數到目前爲止
- 預計的總字節數的總字節數已上傳
- 目前上傳的字節數
在回調方法中,您可以計算下載/上傳的百分比。下面給出一個例子:
$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/
你是對的他們顯示,但這是區別。在我的情況。在這裏,他們將所有請求添加到一起並調用捲曲。但在我的情況下,我必須用ajax調用第一次捲曲,這需要時間,現在在此期間我必須用ajax調用其他捲曲,這可以立即得到響應,並且不應該等待第一次調用完成。所以在我的情況下有2個差異。真正需要調用的就是這個問題。 –
那麼PHP是不是真的被設計來處理多個線程... –
所以你的意思是說有沒有其他的方式來做的PHP? –
- 1. 並行運行PHP/CURL
- 2. 如何在Android中運行cUrl調用?
- 3. PHP如何在PHP中運行此cURL
- 4. 命令行cURL到PHP cURL
- 5. XAMPP,cURL,PHP - cURL未執行
- 6. 在php中運行兩次curl
- 7. 在C++中使用libcurl進行curl調用的默認超時
- 8. Curl/php:執行時間?
- 9. 使用curl進行遠程登錄(php)
- 10. 使用cURL進行php驗證
- 11. 無法在curl中使用curl和ApiKeyAuthentication進行發佈
- 12. 當另一個任務正在運行時運行進度條android
- 13. 使用curl進行多進程,何時必須調用curl_global_init?
- 14. 從Shell Shell運行PHP腳本時,cURL無法正常工作
- 15. 執行PHP使用curl
- 16. PHP中的CURL執行
- 17. curl不能在localhost中運行linux fedora
- 18. ASIHTTP:addOperation當其他線程正在運行
- 19. php curl multipart/form-data不能進行
- 20. php cURL腳本運行兩次
- 21. cURL帖子無法運行PHP
- 22. PHP cURL:在執行大量REST調用時提高性能
- 23. 需要通過CURL調用另一個PHP腳本時進行瀏覽器「會話」
- 24. bash:並行運行cURL比一個接一個慢
- 25. 正在執行其他命令時正在運行一個計時器C++
- 26. 使用curl在多個域進行身份驗證(php/symfony 1.4)
- 27. cURL問題:我如何在PHP中運行這個?
- 28. 當我們用curl運行使用ant的動作時如何顯示進度
- 29. cURL PHP和cURL
- 30. PHP curl重定向到其他網站
對不起,但這是差異。這不是我想要的捲曲進度,我想要的是第一個cal使得我需要顯示的百分比進行計算,因爲我確實需要進行第二次調用。那麼有什麼辦法可以做到嗎? –
嗨@Dileep我嘗試了你要求的方法,但現在我陷入了類似的問題。在這裏,我在會話中存儲進度,並通過其他ajax調用我試圖獲取它,但另一個Ajax調用掛起(等待),直到整個Curl調用結束。任何解決方案? –
嗨@Savan ajax基於進度監測這裏解釋http://www.binarytides.com/ajax-based-streaming-without-polling/。只有一個請求發送並分塊輸出以顯示請求進度。在這種情況下,您的回調方法會產生分塊輸出。 –