位置:首页  >   读书笔记  > 全栈学习-第十五讲-php性能优化及提升

全栈学习-第十五讲-php性能优化及提升

php代码优化一般法则:

    1,不要自己造轮子

    2,及时flush(禁用Gzip)

        用户感知速度

        费时任务异步处理

    3,减少不必要的中间变量

    4,尽量不要在循环里访问数据库

        合并查询,批量插入

    5,按页面合并重复操作。

    6,SQL语句写法

    select * from t_post where ctime>now()-1200

        不好不能缓存

    $t=intval(time()/100)*100


    7.充分利用缓存

        a 循环缓存

        b局部变量缓存

        c类成员变量缓存

        d单次请求缓存,单例模式

            static

            单例模式

        e共享内存

            shmop

        f本地缓存xcache,apc

        g外部缓存memcache,redis

2.XHprof

    下面代码测试过可以使用

<?php
/*
 #使用说明:写下下面三行;并且复制这个文件XHProf.class.php;
 require "XHProf.class.php";
 $xhprof = new XHProf();
 $xhprof->beginProf();
*/
class XHProf{
 public function __construct(){
  $XHPROF_ROOT = '/alidata/www/game';
  require_once $XHPROF_ROOT.'/xhprof_lib/utils/xhprof_lib.php';
  require_once $XHPROF_ROOT.'/xhprof_lib/utils/xhprof_runs.php';
 }
 
 public function beginProf(){
  xhprof_enable();
  register_shutdown_function('XHProf::endProf');
 }
 
 static public function endProf(){
  $xhprof_data = xhprof_disable();
  $xhprof_runs = new XHProfRuns_Default();
  $run_id = $xhprof_runs->save_run($xhprof_data,"xhprof_foo");
  echo '<a href="/xhprof_html/index.php?run='.$run_id.'&source=xhprof_foo" target="_blank">count</a>';
 }
}

 

第三章:PHP原理及代码外优化

    1,编译php与二进制生成

        1,编译优化

            开启-O3编译参数

         2,关闭不必要的扩展

           ./configure -help |grep disable

        3,应用程序瘦身

            strip -g php

            ll -h php

            二进制文件设置断点?

    2,php.ini配置项

            1.看情况调整

                auto_golbals_jit 第一次使用创建$SERVER和ENV

                realpath_cache_size 文件路径缓存大小

                realpath_cache_ttl 文件路径缓存时间

              2,建议关掉

                register_long_arrays 

                expose_php    是否暴露服务器上安装有PHP

                always_populate_raw_post_data

                magic_quotes_* 自动转义引号

    3,php与web服务器运行方式

            1, CLI

            2, CGI

            3,fastcgi

                apache module

                nginx php-fpm

    4,opcode缓存

    6,框架与模块化

        框架性能改进

            语言层次分析性能, XHProf找出瓶颈

            opcode实现代码编译后缓存

            将瓶颈转移到后端

                 中间件将数据库操作转移

            框架功能php模块化

                yaf Phalcon

            重写重组php

                swoole.hhvm ,phpng

     opcode性能对比

        1.php非编译语言

        1.png


        安装vld扩展

        php -d vld.active=1 -dvld.execute=0 test.php

opcode 缓存好处

        1.脚本只解析一次

        如同模板编译,fastcgi

    2.极大地减少了IO

    实现opcode的php模块

    1.zend opcache

    2.APC

    3,Xcache

    4,eAccelerator


    facebook早期使用apc


    php -i | grep php.ini


    查看php进程

    ps -ef |grep php-fpm

   

HHVM与PHPNG

    HipHop Virtual Machine

    facebook出品

    无缝接替php-fpm

    hhvm --mode server -vServer.Type=fastcgi - vServer.Port=9000&

查看php-fpm所在端口

    netstat -nlpt | grep php-fpm

    hhvm将php编译成二进制文件


    PHPNG

    wiki.php.net/phpng


    

    



    



0
文章属性
精彩评论