как узнать, какие данные ответа связаны с его запрошенным URL (в RollingCurl.php)? - PullRequest
1 голос
/ 25 марта 2010

Я пишу веб-приложение, которое захватывает ( параллельно ) заголовки ответа http от нескольких сайтов (с RollingCurl ), затем сохраняет его в массиве и в конце выводит его в формате JSON.

Поскольку некоторые сайты перенаправляют на новые места, функция $ info (массив) в функции «request_callback» всегда содержит URL ($ info [‘url’]), куда был перенаправлен запрошенный URL, и это вполне ожидаемо. Но как вставить запрошенный URL в массив (@ $ info [‘required_url’]), чтобы узнать, какой $ info (данные ответа) связан с запрошенным URL?

$urls = array(
 "http://google.com",
 "http://microsoft.com"
    // more urls here
);

$json = array();
$rc = new RollingCurl("request_callback");
$rc->window_size = 20;

foreach ($urls as $url) {
    $request = new Request($url);
    $rc->add($request);
}

$rc->execute();
echo json_encode($json);
exit;

function request_callback($response, $info) {
       global $json;
       $json['status'][] = $info;
}

// фрагмент из RollingCurl.php :

// send the return values to the callback function.
$callback = $this->callback;
if (is_callable($callback)){
    $info[‘requested_url’] = **???** // How to get a requested url & push it into $info?
    call_user_func($callback, $output, $info);
}

1 Ответ

0 голосов
/ 24 июня 2010

В вашей функции обратного вызова массив $ info должен иметь ключ 'url', который является URL-адресом, который curl_multi использовал для выполнения запроса.

См. Документацию php по curl_getinfo для списка вещей в этом массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...