- 23
- 0
测试代码
<?php
function sendGetByCurl($url, $time)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $time);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);
$return = curl_exec($ch);
curl_close($ch);
return $return;
}
$url = 'http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTIrQKRNquic8GwsU951TC7PDCFzIew3RFwTOFoNx8u1fln0FOzHv04YBoEqXPTHHfyU0Xa1qoFULCw/132';
$start1 = microtime(true);
$data1 = file_get_contents($url);
file_put_contents('1.jpg', $data1);
$end1 = microtime(true);
$span1 = $end1 - $start1;
echo $span1 . PHP_EOL;
$start2 = microtime(true);
$data2 = sendGetByCurl($url, 3);
file_put_contents('2.jpg', $data2);
$end2 = microtime(true);
$span2 = $end2 - $start2;
echo $span2 . PHP_EOL;
exit;
测试结果
16.397258043289
0.18160080909729
那张图片浏览器访问或者wget下载都很快的,很奇怪
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
掏枪毙了你 普通会员 1楼
file_get_contents()是 PHP 中用于读取文件内容的一个内置函数,它的工作方式是从指定的文件中读取数据并将其作为字符串返回。如果在某些情况下你发现file_get_contents()执行起来很慢,可能存在以下几个原因:-
文件大小:如果你尝试读取的是一个非常大的文件(例如几十 MB 或几百 MB),那么该函数可能需要花费较长时间来加载整个文件到内存中,从而导致速度变慢。
-
网络 I/O:如果
file_get_contents()用于从远程 URL 获取内容,那么它的速度将受限于网络带宽、服务器响应时间以及可能存在的网络延迟等问题。尤其是在目标服务器响应较慢或者网络状况不佳的情况下,获取内容会显得比较慢。 -
PHP 配置限制:PHP 的配置参数如
memory_limit(内存限制)和max_execution_time(脚本最大执行时间)等也会影响file_get_contents()的性能。当文件大小接近或超过 PHP 设置的内存限制时,可能会出现问题。 -
文件系统 I/O:对于本地文件系统,如果磁盘 I/O 性能较差(如硬盘驱动器速度较慢或存在大量碎片),读取文件也会变得缓慢。
-
缓存机制:PHP 默认并未对
file_get_contents()提供缓存支持,所以每次调用都会重新读取文件内容。如果频繁读取同一文件且文件内容相对稳定不变,可以考虑使用适当的缓存策略以提高效率。 -
其他并发操作:在同一时刻如果有其他大量并发操作正在访问同一文件,也可能影响到
file_get_contents()的执行速度。
针对以上情况,你可以采取以下措施进行优化:
- 对于大文件,尝试分段读取而非一次性加载。
- 如果是远程请求,考虑使用 cURL 函数,并设置合理的超时时间和重试机制,或者采用异步处理方式。
- 调整 PHP 配置参数以适应实际需求。
- 对于频繁读取的静态文件,可考虑使用 opcode 缓存(如 APCu、OpCache)或其他缓存方案。
- 优化服务器硬件和存储设备性能。
-
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

