我使用curl_multi函數來請求多個URL並在它們完成時處理它們。當一個連接完成時,我真正擁有的是來自curl_multi_info_read()
的cURL句柄(和相關數據)。將cURL句柄作爲數組鍵使用
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句柄。你認爲array_search($ ch,$ jobs)會起作用嗎? –
@Tim我不知道,你必須嘗試......確實,你必須用數字索引以某種方式映射原始作業,但是IMO值得付出努力。 '陣列[$ ch]'聞起來非常邪惡! –