情景复现
项目本地开发过程中写了一个curl方法向远程服务器推送一条信息。本地执行速度正常。但是服务器上执行缺异常缓慢。
问题原因
一句话总结:服务器都开启了 IPv6 却没有路由,无法真正工作。在没有 IPv6 的情况下,会等待 IPv6 解析失败 timeout 之后才按以前的正常流程去找 IPv4
解决方案
对于 PHP curl 来讲,只需要加上下面一句即可解决延迟问题:
- curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
PBootCms的解决方案
文件位置:/core/function/handle.php,搜索curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);,
在下方插入一行
- curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );