php——优化篇
php优化分三个部分
1,编码优化
2,Opcode缓存
3,变量和数据缓存
编码部分
1,字符串连接是使用“,”而不是“.”号
php里逗号和句号都可以起到连接符的作用,关于如何优化输出,可以看这里如何优化php字符串echo输出。
此外,输出多个字符串时,用逗号代替句点来分隔字符串,速度更快
<?php
echo "hi"."there"."good";
echo "hi","there","good";
?>
2,字符串包含变量时使用双引号而不是单引号
实践证明,用单引号代替双引号来包含字符串,这样做会更快一些。
因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。当然,只有当你不需要在字符串中包含变量时才可以这么做。更多分析请看实例分析php单引号和双引号的区别。
<?php
$name="php"
echo 'hi there is '.$name;
echo "hi there ,$name";
?>
3,优先使用require,而不是require_once
导入php脚本的时候会进行大量的操作状态(stat)调用,因而require比required_once 要快。
4,提前计算循环长度
<?php
$items=array(1,2,3,4,5,6,7,8,9);
for($i=0;$i<count(items);i++)
{
statment;
}
$items=array(1,2,3,4,5,6,7,8,9);
$total=count(items);
for($i=0;$i<$total;i++)
{
statment;
}
?>
5,循环访问数组的时候优先使用foreach,其次是用for和while
6,大文件访问是优先使用file_get_contents()。
7,在定义的类中,如无必要可以使用公共变量,而不是使用方法来操作私用变量。
8、echo 比 print 快
echo和print是PHP程序中经常使用的指令,尤其是需要调试的时候。echo和print都能输出一段信息,但经测试发现,echo运行速度会比print快,因此在程序编写是应使用echo而非print。但是有时候也需要用到print,echo不能完全代替print。请看php echo()和print()有什么区别。
9、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。
if else if 的使用非常普遍,在其他语言里也一样,这个写法好像更符合人的说话习惯,但是在程序里这样写并不太好,它在效率上比switch case要低。所以,一旦程序里需要多个判断时,就应该用switch case而不要再用if else if else if这样。
10、数据库连接当使用完毕时应关掉
在操作数据库时,很多程序员往往忘记关掉数据库连接,或许他们没有这个习惯。数据库连接是需要消耗内存为代价的,连接数越多内存消耗就越多,所以在实际应用中都必须及时关闭不需要用到的连接,以释放内存,缓解服务器压力。
11、错误消息代价昂贵
错误消息一般用于调试,它的执行效率其实是很低的,速度上会比直接运行慢很多。所以,在程序不需要抓取错误消息时,就不要用。
12、mod_zip你用了吗
mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。
Opcode缓存
1,APC
2,XCache
3,eAccelerator
变量和数据缓存
1,APC
2,memcached
3,redis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2009-12-09 无限级分类查找节点的所有子级和父级 (转载)