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 倍。
解决方法: