關於DNS解析不受超時設置問題


在很多時候,我們盡管做了超時設置,但任然是無濟於事的,后面上網查了很多文章,大致有了解決方案,但是造成這個問題的原因還是不太清楚的迷,下面就簡單說一下我遇到的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:如果有大神知道造成這個問題的原因,並給予回復的話,感恩😁

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM