php性能优化学习笔记

  编写代码

1.尽可能多的使用内置函数2.比对内置函数的时间复杂度,选择复杂度低的 比如 循环20万次-测试isset 和 array_key_exists 耗时        对比isset.php , array_key_exists.php3.尽可能少用魔法函数        对比__get.php no__get.php4.不好不用@错误抑制符号        查看at.php , 利用vlb扩展查看opcode
1 cli: php -dvld.active=1 -dvld.execute=0 at.php 查看opcode
2
3 //观察下面2行的opcode
4 file_get_contents(‘1.txt‘);
5 @file_get_contents(‘1.txt‘); //opcode 多了些逻辑 
5.合理使用内存和正则表达式        利用unset()及时释放不适用的内存,尽量少用正则表达式6.减少计算密集业务        大数据计算,日志分析等7.务必使用带引号字符串做键值        查看arr.php
 1 <?php
 2 //define(‘key‘,‘imooc‘);
 3 $arr = [
 4     ‘key‘=>‘hello‘,
 5     ‘imooc‘=>‘http://www.imooc.com/‘
 6 ];
 7
 8 echo $arr[key];
 9 /*
10 key没加引号
11 key首先会去寻找 常量key,如果有则取常量key的值,然后取回数组对应的值。
12 如果没找到,则解析成数组内部键
13 */ 
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
 1 <?php
 2 //参照 xhprof项目里的 example/simple.php
 3
 4 #开启
 5 xhprof_enable();
 6
 7 #脚本执行完
 8 register_shutdown_function(function(){
 9
10     $data = xhprof_disable();
11
12     require ‘xhprof_lib/utils/xhprof_lib.php‘;
13     require ‘xhprof_lib/utils/xhprof_runs.php‘;
14
15     //生成分析文件
16     $obj = new XHProfRuns_Default();
17     $run_id = $obj->save_run($data,‘test‘);
18     var_dump($run_id);
19
20 });
11. 开启opcache    php执行流程    1 *.php脚本被底层的zend引擎逐行扫描分析 保存成zend自己能识别的语法    2  zend自己能识别的语法然后再被解析成opcodes (最终将要被执行的代码)    3  最后执行opcodes 输出   附上php执行流程图   

  文中提到文件下载:http://files.cnblogs.com/files/loveyouyou616/yh.zip

 
时间: 2024-10-13 08:54:26

php性能优化学习笔记的相关文章

Web应用程序性能优化学习笔记

Web应用程序性能优化学习笔记 1. 使用瀑布图初步诊断网站性能瓶颈 一般来说,打开一个网页的速度会受到以下几项的影响: 1) 服务器花了太长的时间将.aspx页面的内容转化为html. 2) .aspx页面花了太长的时间从服务器端将内容发送到客户端. 3) 页面上的图片或者flash文件花了太长的时间从服务器端发送到客户端. 4) JavaScript和CSS文件阻塞页面渲染. 我们可以使用“瀑布图”来确定一个页面的性能问题是由于哪一项造成的.FireBug.Chrome自带的“开发人员工具”

kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记

本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6.x系列操作系统下KVM优化的点,有很多都是默认支持开启了的,除了采用virtio方式的磁盘IO,与网络IO接口优化之外,其它真是无需太多优化. 1. CPU性能优化 (1) 服务器或宿主机主板BIOS中开启Intel Virtualization Technology(简称VT), 如果主板支持In

mysql性能优化学习笔记(1)优化目的、方向及数据库准备

前言: 最近参加面试,问到了很多关于mysql的优化方面的问题,回答的不是很好,也是因为原先做的项目流量不是很大,所以对mysql优化不是太了解,所以趁着周末,恶补一下. 本文来源于慕课网sqlercn老师所讲的<性能优化之mysql优化>,根据老师所讲的内容整理所得. 一.为什么需要优化mysql数据库  1.避免出现页面访问错误          由于数据库连接超时产生的5xx错误          由于慢查询造成页面无法加载          由于阻塞造成数据无法提交       2.增

PHP性能优化学习笔记--PHP周边性能优化--来自慕课网Pangee http://www.imooc.com/learn/205

PHP一般运行于Linux服务器中,周边主要包括:Linux运行环境.文件存储.数据库.缓存.网络 常见PHP场景的开销次序: 读写内存<<读写数据库(使用内存作为缓存.异步处理)<<读写磁盘<<读写网络数据(网络延迟) 尽量操作内存和数据库,避免操作磁盘和网络数据,一定要避免读取大文件 一.优化网络请求: 可能存在的问题: 1.对方接口的不确定性因素 2.网络稳定性 优化网络请求措施: 1.设置超时时间(数字可以根据自己项目实际情况进行调整) a.连接超时:200ms

DOM编程性能优化学习笔记

参考高性能javascript  javascript编程全解 1)DOM 文档对象模型是一种操作xml和html文档的接口(API),我们可以通过javascript(ECMAScript)访问DOM,访问或者修改DOM的时候会产生开销,接下来讨论如何减少这方面的开销 这里面想到了几种方案 1)减少DOM的访问次数 使用局部变量 2)创建新的节点的时候 clone已经存在的节点  使用能区分元素节点和其他节点的属性  使用选择器API(这3种优化了方法,使用了不同于之前的方法) 3)最小化重绘

PHP性能优化学习笔记--语言级性能优化--来自慕课网Pangee http://www.imooc.com/learn/205

使用ab进行压力测试 ab -n行数 -c并发数 url 重点关注下面两点: 1.Request per secend : 每秒可接收的请求数 2.Time per request : 每次请求所耗费的时间 优化1.多使用PHP自身的功能(如PHP定义的函数.常量),尽量少自己造轮子,自己写的代码冗余较多,可读性不高,且性能低下 PHP每次接受请求后,都会进行编译成底层语言,C->汇编->机器语言,同时接受大量请求,每个请求都会执行一次编译 示例代码如下: bad.php          

mysql性能优化学习笔记(6)数据库配置优化&amp;硬件优化

一.操作系统配置优化:          1. 网络方面,修改/etc/sysctl.conf文件,增加tcp支持的队列数,减少断开连接时,资源的回收.          2. 打开文件数的限制.修改/etc/security/limits.conf文件,增加一下内容以修改打开文件数量的限制.          3. 关闭iptables,selinux等防火墙软件. 二.系统配置优化     innodb_buffer_pool_size——建议为总内存的75%     innodb_buff

mysql性能优化学习笔记(5)数据库结构优化

一.选择合适的数据类型    1.使用可存下数据的最小的数据类型    2.使用简单地数据类型,Int<varchar    3.尽可能使用not null定义字段    4.尽量少用text,非用不可最好分表    用Int存储日期时间    from_unixtime()可将Int类型的时间戳转换为时间格式    unix_timestamp()可将时间格式转换为Int类型    存储IP地址——bigInt    利用inet_aton(),inet_ntoa()转换 二.范式设计   

mysql性能优化学习笔记(3)常见sql语句优化

一.max()优化mysql> explain select max(payment_date) from payment;+----+-------------+---------+------+---------------+------+---------+------+-------+-------+| id | select_type | table   | type | possible_keys | key  | key_len | ref  | rows  | Extra |+-