问题描述:
cdn地址通过函数file_get_contents请求耗时长,源站地址正常,需要确认原因。 cdn地址: http://cdn.xxxx.com/badman.txt 源站地址: http://yuan.xxxx.com/badman.txt
测试demo:
代码语言:javascript复制<?php
$time=time();
echo "cdn-开始时间:".($time);
echo "---";
echo file_get_contents("http://cdn.xxxx.com/badman.txt");
echo "---";
$i=time();
echo "cdn-结束时间:".($i);
echo "-----------------------------";
$a=time();
echo "源-开始时间:".($a);
echo "---";
echo file_get_contents("http://yuan.xxxx.com/badman.txt");
echo "---";
$b=time();
echo "源-结束时间:".($b);
?>
测试结果:
原因:
cdn域名设置会有超时时间:60s,并且响应为keep- alive状态,所以 PHP 在接收到数据之后, 维持了一段时间, 一直等到超时, 才返回, 所以在设置默认超时时间的情况下会比较慢。
解决方案:
请求之前添加如下部分即可:
代码语言:javascript复制ini_set('default_socket_timeout', 1); //设置一下 默认超时时间
验证结果:
参考文章:
https://www.php.cn/blog/detail/20695.html