How to find out which url failed to execute in curl_multi_exec?

I wrote a class to make it easier to use multi cURL queries. I want to log errors when I get a 404 error or any other error. I already have CURLOPT_FAILONERROR true.

I am currently using curl_multi_info_read() .

and this is my code:

 $active = null; do { $multi_exec = curl_multi_exec($this->_multi_handle, $active); } while ($multi_exec == CURLM_CALL_MULTI_PERFORM); while ($active && $multi_exec == CURLM_OK) { if (curl_multi_select($this->_multi_handle) != -1) { do { $multi_exec = curl_multi_exec($this->_multi_handle, $active); $info = curl_multi_info_read($this->_multi_handle); if ( $info['result'] != 0 ) { $this->_errors[] = $info; // currently storing the whole array } } while ($multi_exec == CURLM_CALL_MULTI_PERFORM); } } 

The error result is an array like this:

 Array ( [0] => Array ( [msg] => 1 [result] => 22 // on success this is 0 [handle] => Resource id #4 // does this help in finding the url if I have the handle ID ? ) 

So how can I get the url where the error occurred? this gives me the descriptor resource id

and thanks in advance.

+6
source share
1 answer

Depending on what you really need, you can pass this handle to curl_error or curl_errno to check for errors, and you can use curl_getinfo to extract the URL from this handle:

 curl_getinfo($info['handle'], CURLINFO_EFFECTIVE_URL); 
+9
source

Source: https://habr.com/ru/post/926582/


All Articles