curl 用完千萬別忘 close !

qufo發表於2018-03-27

正常的一天,忙碌的一天,只是,應用中某個 api 頻繁報 502 。
這個神奇了,查程式碼,一路查,最後竟然是一個 curl 錯誤了導致的,於是開始檢查 curl 的程式碼。
一般的 curl 大概是這樣

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$content = curl_exec($ch);
curl_close($ch);
return $content;

看起來一切正常呀。

經過各種嘗試,各種斷點各種引數各種記日誌各種折騰都無果。

然後。。。

睡了一覺想起來了。於是。。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
try{
    $content = curl_exec($ch);
} finally{
    curl_close($ch);
}

好了。

總結,無論何時,記得關閉curl,不是簡單在地 curl_exec 後 curl_close ,記得 try finally 。
那些看到標題沒點進來的朋友,嗯,祝你們好運。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章