Я работал над этим и не мог найти способ полностью его понять.Как работает cURL Keep-alive?
У меня есть этот код:
<?php
function get2($url) {
// Create a handle.
$handle = curl_init($url);
// Set options...
// Do the request.
$ret = curlExecWithMulti($handle);
// Do stuff with the results...
// Destroy the handle.
curl_close($handle);
}
function curlExecWithMulti($handle) {
// In real life this is a class variable.
static $multi = NULL;
// Create a multi if necessary.
if (empty($multi)) {
$multi = curl_multi_init();
}
// Add the handle to be processed.
curl_multi_add_handle($multi, $handle);
// Do all the processing.
$active = NULL;
do {
$ret = curl_multi_exec($multi, $active);
} while ($ret == CURLM_CALL_MULTI_PERFORM);
while ($active && $ret == CURLM_OK) {
if (curl_multi_select($multi) != -1) {
do {
$mrc = curl_multi_exec($multi, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
// Remove the handle from the multi processor.
curl_multi_remove_handle($multi, $handle);
return TRUE;
}
?>
Данный скрипт делает это: я бегу PHP, и это создает новое соединение TCP, он возвращает данные, а затем закрывает соединение.
Сервер работает с HTTP 1.1 и соединением: keep-alive.
Что я хочу, если я запустил сценарий, создаст соединение, вернет данные и НЕ закроет соединение, а когда я запустим скрипт PHP, то будет использовать это же соединение (конечно, если это соединение не истечет после таймаута от севера).
Возможно ли это с cURL
? Я понимаю multi
в cURL
неправильно?