I have to call external script in which i make a first call with CURL to get data which takes about 2-3 minutes, Now during this time i need to make other external call with CURL to get the progress of the first call. But issue is my next call wait till the reply of first CURL comes. I also checked curl_multi but that is also not helping me as i want to make many calls when the first call is in progress. So anyone can help me to solve it please.
2条回答 默认 最新
douqi1931 2017-06-02 13:20关注I suppose that, there is no need to make second call to track the CURL progress. You can achieve the same by using CURL option
CURLOPT_PROGRESSFUNCTIONwith a callback function.The call back method takes 5 arguments:
- cURL resource
- Total number of bytes expected to be downloaded
- Number of bytes downloaded so far
- Total number of bytes expected to be uploaded
- Number of bytes uploaded so far
In the callback method you can calculate the percentage downloaded/uploaded. An example is given below:
$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 . "% "; sleep(1); }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报