PHP性能优化
来源:互联网 发布:简明医学统计学软件 编辑:程序博客网 时间:2024/05/21 20:24
PHP项目优化主要三个方面
一、PHP语言级性能优化
二、PHP周边问题的性能优化
三、PHP底层
PHP语言级性能优化
1)少写代码,多用PHP自身能力。尽量使用PHP原生函数和常量,类如果要实现的功能有原生PHP函数,则不要自己用PHP实现
2)尽量使用性能更高的内置函数比如isset和array_key_exists都可以使用,则使用isset
3)产生额外开销的错误抑制符@
4)合理使用内存(PHP有内存回收机制保底,但也请小心使用内存,建议:利用unset() 及时释放不使用的内存)
5)尽量少的使用正则表达式(建议,利用字符串处理函数,实现相同逻辑)
6)循环内的计算式将会被重复计算。经常犯的错误是把一个SQL 操作放置到一个循环中,这就导致频繁的访问数据库,更重要的是,这会直接导致脚本的性能低下。以下的例子,你能够把一个循环操作重置为一个单一的SQL语句。
例:
<span style="color:#333333;"><?php //建议$str = 'hello world';$strlen = strlen($str);for($i = 0 ; $i<$strlen;$i++){}?></span>
?>
<span style="color:#333333;">foreach ($userList as $user) { $query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")'; mysql_query($query);} 过程:1INSERT INTO users (first_name,last_name) VALUES("John", "Doe")</span>
<span style="color:#333333;">替换成:</span>
<span style="color:#333333;"><pre name="code" class="html">$userData = array();foreach ($userList as $user) { $userData[] = '("' . $user['first_name'] . '", "' . $user['last_name'] . '")'; }$query = 'INSERT INTO users (first_name,last_name) VALUES' . implode(',', $userData);mysql_query($query); 过程:1INSERT INTO users (first_name,last_name) VALUES("John", "Doe"),("Jane", "Doe")...</span>
7)没有原因不要copy变量。有时初级phper,为了使代码更加“干净”,常常把已经定义的变量重新赋值给另一个变量。这实际上就导致了双重内存的消耗(当改变变量的时候),这就导致脚本的性能下降。比如一个用户把一个512KB的变量在额外插入给另一个变量,那么就会导致1MB的内存被消耗掉。
<span style="color:#333333;">$description = strip_tags($_POST['description']);echo $description; </span>替换为:
<span style="color:#333333;"><span style="font-size:14px;">echo strip_tags($_POST['description']);</span></span>
周边:
1)Linux 运行环境
文件存储(硬盘,ssd)
数据库(MySQL 索引使用,NoSQL+MySQL的配合使用,MySQL主从等)
缓存(memcache redis)
2)减少文件类操作
常见PHP场景的开销次序:
读写磁盘、读写数据库、读写内存、读写网络数据
读写内存<< 读写数据库<读写磁盘<读写网络数据(基于文件系统)
3)优化网络请求
例: 对方接口的不确定因素,网络稳定性
设置超时时间
a)连接超时 (不能超过 200ms) b)读超时(800ms) c)写超时(500ms)
2) 将串行请求并行化
a)使用curl_multi_*() b)使用swoole扩展
4)压缩PHP接口输出
5)PHP缓存重复计算内容
6)Smarty 调优和重叠时间窗口思想
7)使用xhprof分析项目源码,找出瓶颈进行优化
工具:XHPorf(源自Fackbook的PHP性能分析工具)
ab - 压力测试
vld - opcode 代码分析
PHP底层
1)使用opcode扩展 缓存PHP的opcode代码,减少PHP的编译过程
2)CPU密集或者复杂功能使用PHP的pecl扩展(swoole等优秀扩展的使用)3)HHVM,百度再用,不过还是让我们坐等PHPNG的问世,有PHPNG,HHVM就不是必须的选择了
- 关于PHP性能优化
- Lighttpd+PHP性能优化
- PHP性能优化
- PHP的性能优化
- php性能优化技巧
- PHP.ini 性能优化
- PHP 性能优化技巧
- php 性能优化
- PHP 性能优化技巧
- PHP 性能优化技巧
- PHP.ini 性能优化
- PHP性能优化总结
- PHP 性能 优化 缓存
- 优化php性能
- PHP性能优化
- PHP.ini 性能优化
- PHP 性能优化技巧
- PHP 性能优化技巧
- Retrofit添加header参数的几种方法。
- 在github上传一个自己的项目
- redis 缓存
- 计时器countdownTimer的使用
- 二叉树的常见操作
- PHP性能优化
- 神经网络八:权重初始化
- 那些高级的js原生事件
- 爬虫基础----requests库
- 学习笔记 Tianmao 篇 使用简单封装后的自定义OkHttp 获取json被GSON解析后的数据
- OpenCV Tutorial: 影像相加(add、addWeighted)
- C#中对泛型的理解
- 浮动操作按钮的选择
- Java反射