在很多時候,我們盡管做了超時設置,但任然是無濟於事的,后面上網查了很多文章,大致有了解決方案,但是造成這個問題的原因還是不太清楚的迷,下面就簡單說一下我遇到的DNS解析超時問題:
剛開始只設置了請求超時`CURLOPT_TIMEOUT`選項,時間為3秒,如下:
curl_setopt($curl, CURLOPT_TIMEOUT, 3); // 設置超時限制防止死循環
發現curl執行時間是12秒多,又追加了連接超時`CURLOPT_CONNECTTIMEOUT`為2秒,如下:
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2); // 設置連接超時限制防止死循環
然鵝,並沒有卵用,curl執行時間仍然是12秒,且報同樣的curl_error [Resolving timed out after 3511 milliseconds]
因為本人比較執着,終於找到了有用的文章,試着根據里邊講到的去指定DNS解析規范為IPV4,問題完美解決掉了,最終設置如下:
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );// 解決DNS解析不受超時設置控制 curl_setopt($curl, CURLOPT_TIMEOUT, 3); // 設置超時限制防止死循環 curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2); // 設置連接超時限制防止死循環
很感激這位博主的聰明才智,我僅是一位搬運工,為了更多遇到相同問題的人能准確地定位問題,並解決掉問題。
參考文章:https://phpjieshuo.com/archives/124/
PS:如果有大神知道造成這個問題的原因,並給予回復的話,感恩😁