include 或者 require 貌似都很慢 我一个页面执行时间10msinclude 12个文件占了 5ms换成require依旧是否可破? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 include 本身并不会消耗多少时间,我觉得还是被包含的文件中有操作消耗了时间。 我测试了,被包含的文件本身执行只需要 0.05ms 秒, 包含它需要0.5mx 你包含个普通文件试试include和require速度原理上一回事应该是你包含的那些文件太复杂 不复杂,上面说了被包含的文件本身执行只需要 0.05ms 秒, 包含它需要0.5ms 放到一个文件里稍快了一点,但是合成的这个文件自己执行的话也只需要 0.05ms, 而包含它用了 2至3ms 看看apache的日誌以及php的日誌,看看有沒有給你提供點有用的信息 客观地说,你10个文件就0.5ms,那zf/yii等框架,加载几百个,那岂不是1s的样子了?所以我建议你先找找你被include的文件里,是不是有执行某个动作。一个一个文件的去查而不是去挑php自带函数的问题。 麻烦认真看贴再吐槽上面说了(8楼),我把所有被包含的文件合成一个,并获取自身执行时间,约为0.05ms, over顺便说一下,这些文件里只有类定义 那你都确定所包含的文件都没有执行任何东西,只是纯包含文件都需要这么多时间,那只能说是php 的include效率低下了。方法有很多,你可以一个文件一个的去掉包含,有些东西不是计算每个文件时间来确定的。当然也要把错误全部打开。 a.php<?php$time_start=microtime(true);class a{ function a(){ }}?>$time_end = microtime(true);printf ("[exec time: %.2fms]",($time_end - $time_start)*1000);时间约为0ms<?php$time_start=microtime(true);require 'a.php';$time_end = microtime(true);printf ("[exec time: %.2fms]",($time_end - $time_start)*1000);[/code]时间为 0.08ms 你测试的是对的,加载文件是要花时间的!不仅要从文件系统中找到文件并加载的内存,而且还要调用语法分析模块来判定代码的合法性所以#2我让你合并到一个文件中去当然你必须注意到$time_start=microtime(true);是在程序开始运行时才有效的而 php 实际开始工作(加载php程序)的时间还要早一些$_SERVER['REQUEST_TIME'] 请求开始时的时间戳php 5.4 还提供了更精确的$_SERVER['REQUEST_TIME_FLOAT'] 包含总是慢的,不论什么语言即使是html+css两个文件和一个html内写css,在本地测试都有区别,只不过网络传送耗时把加载耗时盖掉了编译语言在编译时处理掉了加载的问题但解析语言加载就不能无视这个问题,不要把编译语言那套腾挪过来不然写一个超大文件,里面成百上千个类,一次include就够了,呵呵 我平时写的习惯是拆分类,按需加载早期的时候我甚至用php来写css,输出尽可能少,看着一个上百k的css文件我就累但现在网络速度提高了,甚至几百k的整站css发送都不成问题了 昨天我做了一个测试,同样的代码windows下执行800毫秒,而linux下执行只需要120毫秒 用了xcode后,耗时降下来了,包含12个文件用了接近1ms tar怎么压缩指定路径 调试PHP程序 如何将从SQL语句读取的数据赋值给一个变量? phpmyadimin老是乱码? 读网站问题 php获得sybase数据库内容的问题 php10岁了 表单的内容不能传到php的处理程序,高手帮帮忙啊!!!! 请教PHP数组的传递 如何将矩阵的内部指针移动到指定的元素上. 时间戳如何转换 INCLUDE问题 求教
我测试了,被包含的文件本身执行只需要 0.05ms 秒, 包含它需要0.5mx
不复杂,上面说了
被包含的文件本身执行只需要 0.05ms 秒, 包含它需要0.5ms
放到一个文件里稍快了一点,但是合成的这个文件自己执行的话也只需要 0.05ms, 而包含它用了 2至3ms
你10个文件就0.5ms,那zf/yii等框架,加载几百个,那岂不是1s的样子了?
所以我建议你先找找你被include的文件里,是不是有执行某个动作。一个一个文件的去查
而不是去挑php自带函数的问题。
麻烦认真看贴再吐槽
上面说了(8楼),我把所有被包含的文件合成一个,并获取自身执行时间,约为0.05ms, over
顺便说一下,这些文件里只有类定义
方法有很多,你可以一个文件一个的去掉包含,有些东西不是计算每个文件时间来确定的。
当然也要把错误全部打开。
$time_start=microtime(true);
class a{
function a(){ }
}
?>
$time_end = microtime(true);
printf ("[exec time: %.2fms]",($time_end - $time_start)*1000);时间约为0ms<?php
$time_start=microtime(true);
require 'a.php';
$time_end = microtime(true);
printf ("[exec time: %.2fms]",($time_end - $time_start)*1000);
[/code]时间为 0.08ms
不仅要从文件系统中找到文件并加载的内存,而且还要调用语法分析模块来判定代码的合法性
所以#2我让你合并到一个文件中去当然你必须注意到
$time_start=microtime(true);
是在程序开始运行时才有效的
而 php 实际开始工作(加载php程序)的时间还要早一些$_SERVER['REQUEST_TIME'] 请求开始时的时间戳
php 5.4 还提供了更精确的
$_SERVER['REQUEST_TIME_FLOAT']
即使是html+css两个文件和一个html内写css,在本地测试都有区别,只不过网络传送耗时把加载耗时盖掉了编译语言在编译时处理掉了加载的问题
但解析语言加载就不能无视这个问题,不要把编译语言那套腾挪过来
不然写一个超大文件,里面成百上千个类,一次include就够了,呵呵 我平时写的习惯是拆分类,按需加载
早期的时候我甚至用php来写css,输出尽可能少,看着一个上百k的css文件我就累
但现在网络速度提高了,甚至几百k的整站css发送都不成问题了
用了xcode后,耗时降下来了,包含12个文件用了接近1ms