php性能优化学习笔记
编写代码
1.尽可能多的使用内置函数
2.比对内置函数的时间复杂度,选择复杂度低的 比如 循环20万次-测试isset 和 array_key_exists 耗时
对比isset.php , array_key_exists.php
3.尽可能少用魔法函数
对比__get.php no__get.php
4.最好不用@错误抑制符号
查看at.php , 利用vlb扩展查看opcode
cli: php -dvld.active=1 -dvld.execute=0 at.php 查看opcode //观察下面2行的opcode
file_get_contents('1.txt');
@file_get_contents('1.txt'); //opcode 多了些逻辑
5.合理使用内存和正则表达式
利用unset()及时释放不适用的内存,尽量少用正则表达式
6.减少计算密集业务
大数据计算,日志分析等
7.务必使用带引号字符串做键值
查看arr.php
<?php
//define('key','imooc');
$arr = [
'key'=>'hello',
'imooc'=>'http://www.imooc.com/'
]; echo $arr[key];
/*
key没加引号
key首先会去寻找 常量key,如果有则取常量key的值,然后取回数组对应的值。
如果没找到,则解析成数组内部键
*/
8. php周边问题的性能优化
linx服务器优化,文件存储,内存缓存,网络
减少网络请求:
a.可以使用curl_multi_*()
b.使用swoole扩展 9.php做接口, 压缩php接口输出 如gzip
利:有利于client端更快接收数据;
弊:额外的cpu开销
结论:小于几十kb压缩效果不好,大于100k可以尝试 10. 利用xhprof性能测试
查看xhprof.php
参考: http://avnpc.com/pages/profiler-php-performance-online-by-xhprof
<?php
//参照 xhprof项目里的 example/simple.php #开启
xhprof_enable(); #脚本执行完
register_shutdown_function(function(){ $data = xhprof_disable(); require 'xhprof_lib/utils/xhprof_lib.php';
require 'xhprof_lib/utils/xhprof_runs.php'; //生成分析文件
$obj = new XHProfRuns_Default();
$run_id = $obj->save_run($data,'test');
var_dump($run_id); });
11. 开启opcache
php执行流程
1 *.php脚本被底层的zend引擎逐行扫描分析 保存成zend自己能识别的语法
2 zend自己能识别的语法然后再被解析成opcodes (最终将要被执行的代码)
3 最后执行opcodes 输出
附上php执行流程图
文中提到文件下载:http://files.cnblogs.com/files/loveyouyou616/yh.zip
php性能优化学习笔记的更多相关文章
- Pandas 性能优化 学习笔记
摘要 本文介绍了使用 Pandas 进行数据挖掘时常用的加速技巧. 实验环境 import numpy as np import pandas as pd print(np.__version__) ...
- KVM性能优化学习笔记
本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...
- 深挖计算机基础:Linux性能优化学习笔记
参考极客时间专栏<Linux性能优化实战>学习笔记 一.CPU性能:13讲 Linux性能优化实战学习笔记:第二讲 Linux性能优化实战学习笔记:第三讲 Linux性能优化实战学习笔记: ...
- mysql性能优化学习笔记-参数介绍及优化建议
MySQL服务器参数介绍 mysql参数介绍(客户端中执行),尽量只修改session级别的参数. 全局参数(新连接的session才会生效,原有已经连接的session不生效) set global ...
- mysql性能优化学习笔记
mysql性能优化 硬件对数据库的影响 CPU资源和可用内存大小 服务器硬件对mysql性能的影响 我们的应用是CPU密集型? 我们的应用的并发量如何? 数量比频率更好 64位使用32位的服务器版本 ...
- js性能优化--学习笔记
<高性能网站建设进阶指南>: 1.使用局部变量,避免深入作用域查找,局部变量是读写速度最快的:把函数中使用次数超过一次的对象属性和数组存储为局部变量是一个好方法:比如for循环中的.len ...
- mysql性能优化学习笔记(1)优化目的、方向及数据库准备
前言: 最近参加面试,问到了很多关于mysql的优化方面的问题,回答的不是很好,也是因为原先做的项目流量不是很大,所以对mysql优化不是太了解,所以趁着周末,恶补一下. 本文来源于慕课网sqlerc ...
- Java性能优化学习笔记
1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控 ...
- PHP性能优化学习笔记--PHP周边性能优化--来自慕课网Pangee http://www.imooc.com/learn/205
PHP一般运行于Linux服务器中,周边主要包括:Linux运行环境.文件存储.数据库.缓存.网络 常见PHP场景的开销次序: 读写内存<<读写数据库(使用内存作为缓存.异步处理)< ...
随机推荐
- SVM大致思路整理
(一)线性可分 我们忽略建立目标函数的过程,直接写出目标函数. 原问题: 首先,我们得到了目标函数: 这是一个凸优化问题,直接可以用软件可以求解: 对偶问题: 原问题根据一系列的变换,可写成: 满足某 ...
- [QT]问题记录-QPixmap::scaled 缩放不成功
解答的帖子: http://bbs.csdn.net/topics/391850818 使用 pix.scaled(400,400) 之后需要将图片返回就可以了.
- 使用 Windows 10 中的加速度计(Accelerometer,重力传感器)
在做 UWP 应用开发的时候还有什么理由可以用到加速度计呢?场景很多啦,比如做游戏,做类似 Surface Hub 那种一边旋转,一边所有内容跟着一起转的效果. Windows 10 UWP 中的加速 ...
- 6-18 Two Stacks In One Array(20 分)
Write routines to implement two stacks using only one array. Your stack routines should not declare ...
- swagger api 转graphql npm 包试用
graphql 比较方便的进行api 的查询,操作,swagger 是一个方便的open api 描述标准,当前我们有比较多的 restapi 但是转换为graphql 是有成本的,还好swagger ...
- 基于http协议的加密传输方案
最近公司需要通过公网与其它平台完成接口对接,但是基于开发时间和其它因素的考虑,本次对接无法采用https协议实现.既然不能用https协议,那就退而求其次采用http协议吧! 那么问题来了!在对接的过 ...
- 解决内部元素onMouseOver/onMouseOut事件冒泡触发父元素的相应事件
前阵子为BS项目模板做了一个左侧滑动信息栏,效果类似于windows状态栏的自动隐藏效果,鼠标移进滑出,鼠标移出隐藏,浮动时不占用空间,也可以固定住占一块位置.做的过程中遇到一个问题,鼠标在信息栏内部 ...
- mysql master master slave 环境搭建
master1:192.168.128.47 master2:192.168.128.96 slave:192.168.128.97 master1与master2互备,master2作为slav ...
- linux之 ssh连接服务器,WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
[root@zk01 ~]# ssh localhost@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: RE ...
- python 书籍推荐 二
Python是一中面向对象的编程语言,语法简洁而清晰,具有丰富和强大的类库.对于初学编程者来说,首选Python是个非常棒的选择. 工具/原料 Python Python学习前的准备 1 学习任何 ...
