我正在使用 curl_multi 函数来请求多个 URL 并在它们完成时对其进行处理。当一个连接完成时,我真正拥有的只是来自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 句柄映射到创建它们的作业?