3
我使用cURL的CURLOPT_WRITEFUNCTION選項來指定一個回調,以便在數據從cURL請求進入時處理。cURL WRITEFUNCTION帶匿名函數和閉包的回調
$serverid=5;
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.whatever.com');
curl_setopt(
$ch,
CURLOPT_WRITEFUNCTION,
function ($ch, $string) {
return readCallback($ch, $string, $serverid);
}
);
curl_exec($ch);
function readCallback($ch, $string, $serverid) {
echo "Server #", $serverid, " | ", $string;
return strlen($string);
}
我想用一個匿名函數來調用我自己的函數,實際工作中不工作(readCallback()
),這樣我可以包括與請求($serverid
)相關聯的服務器ID。我該如何正確使用閉包,以便當cURL達到我的回叫匿名函數時,匿名函數知道它最初是用$serverid=5
定義的,並且可以適當地調用readCallback()
?
我最終會使用ParalellCur l和一個常見的回調,這就是爲什麼有必要有一個匿名函數用ID調用我的回調函數。
非常好,謝謝!現在,'使用'將該變量鎖定到匿名函數定義時的值嗎?例如,我最終會計劃在一個循環中調用它,'$ serverid'的值會改變每次迭代。如果不是,我該如何創建這樣一個綁定? – Brad 2011-03-27 22:37:56
看更新後的答案 – 2011-03-27 22:48:28
感謝Imi的澄清。價值實際上是我所需要的,但我可以想到時間參考也會有用。非常好,再次感謝! – Brad 2011-03-27 22:56:12