Я использую функции curl_multi для запроса нескольких URL-адресов и обработки их по мере их завершения.Когда одно соединение завершается, все, что у меня есть, - это дескриптор cURL (и связанные данные) из curl_multi_info_read()
.
URL-адреса поступают из очереди заданий, и после обработки мне нужно удалить задание из очереди.Я не хочу полагаться на URL-адрес для определения задания (там не должно быть дублирующими URL-адресами, но что если равно ).
Решение, которое я до сих пор работал, состоит в том, чтобы использовать дескриптор cURL в качестве ключа массива, указывающего на jobid.Форма, что я могу сказать, когда рассматривается как строка, дескриптор что-то вроде:
"Resource id #1"
Это выглядит достаточно уникально для меня.Основной код:
$ch = curl_init($job->getUrl());
$handles[$ch] = $job;
//then later
$done = curl_multi_info_read($master);
$handles[$done['handle']]->delete();
curl_multi_remove_handle($master, $done['handle']);
Безопасно ли использовать таким образом дескриптор cURL?
Или есть лучший способ сопоставить дескрипторы cURL сработа, которая их создала?