一、善用工具
1.ab压力测试工具
./ab -n1000 -c100 http://baidu.com
-n 请求数 -c 并发数
详细可参看: http://www.php.cn/php-class-code-337971.html
2. 善用php的代码查看扩展 vld
scanner
*.php ---------- exprs
|
| parser
exec |
output --------- opcodes
查看php中的opcode
php -dvld.active=1 -dlvd.execute=0 test.php
详细请参看: http://blog.csdn.net/21aspnet/article/details/7002644
3. 使用xhporf扩展查看性能瓶颈
主要查看:红色的区块图 和 最粗的那条调用路线的优化
详细请参看:http://blog.csdn.net/ebw123/article/details/50239785
二、语言层面
1. 前面提及多用语言结构代替函数
isset() 和 array_key_exists 查看2. 减少使用php使用魔法函数
linux下使用命令
time php5 ./test.php
看 user 时间开销 魔法函数会更耗时
3. 禁用错误抑制符@
实际在 @ 的代码行前后增加 opcode,设置报错级别为0,增加系统开销,不利于错误定位4. 合理使用内存
unset() 掉不要的变量(unset注销不掉的情况)尽量少用正则表达式
5. 避免在循环中做运算
减少计算密集型业务务必使用带引号字符串做键值,减少常量查找开销
6. 减少文件类操作
读写网络数据 > 读写磁盘 > 读写数据库 >> 读写内存7. 压缩php输出
使用gizp压缩(会增加 额外的cpu开销,大于100k 重复内容较多 压缩效果会好,否则不建议)8. php缓存复用
redis缓存(计算 数据处理)9.少写代码
多用php自身函数和内置变量、常量,(php语言解析成C,C要解析成汇编,会造成系统开销)三、并行计算
1.设置超时时间
连接超时 200ms
读超时 800ms
写超时 500ms
2.串行请求并行化 (重叠时间窗口)
使用curl_multi_*
curl_multi_add_handle
curl_multi_close
curl_multi_exec
curl_multi_getcontent
curl_multi_info_read
curl_multi_init
curl_multi_remove_handle
curl_multi_select
curl_multi_setopt
curl_multi_strerror
3. 使用swoole扩展