6

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

I'm 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 result on error 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 happened ? this only gives me the handle resource ID

and thanks in advance.

1 Answer 1

9

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

curl_getinfo($info['handle'], CURLINFO_EFFECTIVE_URL);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.