background image

   PHP 性能优化总结

  针对系统调用过多的优化

我这次的优化针对

syscall 调用过多的问题,所以使用 strace 跟踪 apache 进

行分析。

1.  apache2ctl -X &
使用

-X(debug)参数启动 httpd 进程,这个时候只启动 1 个 httpd 进程

2. ps -ef | grep httpd
找到需要

strace 的 pid

3. strace -p $PID -o /tmp/strace.log
发送一个

http 请求到 httpd,就能看到 strace 信息了。

 
一、

include_path 问题

一般可以看到很多这类信息:
stat64("/error/dir/test.php", 0xbfab4b9c) = -1 ENOENT (No such file or 

directory)

解决方法:
1. 在应用 php 里面设置 include_path,去掉'.'等相对路径,将其中包含使用

文件比较多的目录放到前面。保证遍历

include_path 的时候能够很快找到。

2. 使用绝对路径 www.516fc.net 进行

include,require,include_once,require_once

3. 使用 php 的自动加载机制
 
二、

apache 的 rewrite 配置

    RewriteEngine On
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
    RewriteRule .* %{DOCUMENT_ROOT}%/index.php

 

  #RewriteRule .* /index.php

  

这里最后一个

www.penqiang.net 注释掉的 rewrite 配置不好,因为它每次请

求都会多一次

syscall

stat64("/index.php", 0xbfab4b9c) = -1 ENOENT (No such file or directory)
 
三、

apache 日志 www.hthrt.com 问题

我们在测试一个问题的时候,发现如果自定义日志里面记录了访问时间等

信息,会多出很多

stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=165, ...}) = 0 
如果记录的

www.szhrtz.com 日志比较多,性能下降非常严重,对于简单应

用,记录复杂日志,性能会下降

30 倍。

解决方法: