1. 尽量使用php自身函数,不使用自己创建的函数.
2.使用性能高的函数,比如说在判断某个变量是否在一个数组中,使用isset()函数,而不使用array_key_exists()函数.
3.在for循环中,不将动态变量写for语句中
eg:
不推荐写法:
$arr = array();
for($i=0;$i<$count($arr);++$i){
echo $i;
}
推荐写法:
$arr = array();
$len=count($arr);
for($i=0;$i<$len;++$i){
echo $i;
}
4.不使用错误抑制控制符:@,因为@方法相当于在@当前代码前加上了禁用错误提示,当@所在行的代码执行后,重新启用错误提示
<?php
@$sql = mysql_connect(*);
echo "我一直在执行";
?>
5.php周边问题性能优化
lniux运行环境
文件存储
数据库
缓存
网络
(1).减少文件操作:读写磁盘,读写内存,读写数据库
系统的开销
读写内存 << 读写磁盘
读写内存 << 读写数据库 <读写磁盘
读写内存 << 读写数据库 <读写磁盘 < 读写网络
(2).优化网络请求
1.对方接口的不确定因素
2.网络稳定性
优化网络请求:
设置超时时间:连接超时(200ms),读超时(800ms),写超时(500ms) 最好不超过1s
将串行请求并行化:使用curl_multi_*(),使用swoole扩展
压缩php接口输出:使用Gzip压缩(有利于我的数据输出,client端可以更快的获取数据,但会占用cpu的开销)
3.缓存重复计算的内容 (eg:redis)
多次请求,内容不经常变更的数据.
4.使用smarty模板缓存
5.重叠时间的思想:
串行:只能上一个任务完成后才执行下一个任务
重叠时间窗口:指的是下一个任务和上一个任务有依赖,上一个任务执行到一定时间时,下一个任务开始执行
6.使用旁路方案
2.使用性能高的函数,比如说在判断某个变量是否在一个数组中,使用isset()函数,而不使用array_key_exists()函数.
3.在for循环中,不将动态变量写for语句中
eg:
不推荐写法:
$arr = array();
for($i=0;$i<$count($arr);++$i){
echo $i;
}
推荐写法:
$arr = array();
$len=count($arr);
for($i=0;$i<$len;++$i){
echo $i;
}
4.不使用错误抑制控制符:@,因为@方法相当于在@当前代码前加上了禁用错误提示,当@所在行的代码执行后,重新启用错误提示
<?php
@$sql = mysql_connect(*);
echo "我一直在执行";
?>
5.php周边问题性能优化
lniux运行环境
文件存储
数据库
缓存
网络
(1).减少文件操作:读写磁盘,读写内存,读写数据库
系统的开销
读写内存 << 读写磁盘
读写内存 << 读写数据库 <读写磁盘
读写内存 << 读写数据库 <读写磁盘 < 读写网络
(2).优化网络请求
1.对方接口的不确定因素
2.网络稳定性
优化网络请求:
设置超时时间:连接超时(200ms),读超时(800ms),写超时(500ms) 最好不超过1s
将串行请求并行化:使用curl_multi_*(),使用swoole扩展
压缩php接口输出:使用Gzip压缩(有利于我的数据输出,client端可以更快的获取数据,但会占用cpu的开销)
3.缓存重复计算的内容 (eg:redis)
多次请求,内容不经常变更的数据.
4.使用smarty模板缓存
5.重叠时间的思想:
串行:只能上一个任务完成后才执行下一个任务
重叠时间窗口:指的是下一个任务和上一个任务有依赖,上一个任务执行到一定时间时,下一个任务开始执行
6.使用旁路方案
只有在下一个任务不依赖上一个任务时,就可以在其中加入另一个任务(eg:模板渲染中会涉及到,smarty模板)