2009年11月

使用ignore_user_abort函数做php定时任务

已经调试完成, 观测了cpu等信息很不错。
1. 通过ini文件配置
2. 可以随时终此。

重点:

set_time_limit(0); //必须把运行去超时时间设为无限制
ignore_user_abort (true); //启用断开仍然执行
另外运用while(true)进行消息监听,类似于桌面运用程序.

好处: 实用于虚拟主机用户,无法通过程序做定时任务的朋友

NeiLyi

php-fpm测试

1. 软件版本
Nginx 0.7.17
php 5.2.6
php-fpm 0.5.9
编译参数
./configure –prefix=/usr/local/webserver/php \
–with-config-file-path=/usr/local/webserver/conf \
–enable-fastcgi \
–enable-fpm \
–with-fpm-conf=/usr/local/webserver/conf/php-fpm.conf \
–enable-force-cgi-redirect \
–with-gd \
–with-jpeg-dir \
–with-png-dir \
–enable-gd-native-ttf \
–with-freetype-dir \
–with-mysql=/usr/local/webserver/mysql \
–with-libxml-dir \
–with-mcrypt \
–with-mhash \
–with-curl \
–with-curlwrappers \
–with-zlib-dir \
–with-zlib \
–with-pear \
–with-openssl \
–without-pdo-sqlite \
–without-sqlite \
–disable-debug \
–disable-rpath \
–without-iconv \
–enable-bcmath \
–enable-pcntl \
–enable-mbstring \
–enable-exif \
–enable-zip \
–enable-ftp

3. 补丁安装方法
下载fpm补丁
将fpm加入php
patch -p1 < php-5.2.6-fpm-0.5.9.diff
在./configure后加入–enable-fastcgi –enable-fpm 以启用fpm

4.测试方法
取服务端的一个页面
var_dump($_SERVER);
phpinfo();
?>
另一台服务器发起请求
./http_load -parallel 25 -seconds 10 urls

5.CPU以及内存使用情况
对使用fpm启动的php-cgi以及spawn-fcgi启动的php-cgi进行比对
使用http_load对两者进行访问
然后获取服务器内的内存使用以及响应速度
fpm的使用后CPU下降的比较缓慢.而spawn-cgi的进程cpu下降很快.
很多情况下是使用完后进程CPU便回到0.0

php-fpm
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
root 27724 0 1.2 103468 3400 ? Ss 02:45 00:00
nobody 27725 0.6 2.1 103988 5672 ? S 02:45 00:00
nobody 27726 0.5 2.1 103988 5672 ? S 02:45 00:00
nobody 27727 0.6 2 103988 5352 ? S 02:45 00:00
nobody 27728 0.7 2 103988 5348 ? S 02:45 00:00
nobody 27729 0.5 2 103988 5348 ? S 02:45 00:00
nobody 27730 0.6 2 103988 5348 ? S 02:45 00:00
nobody 27731 0.5 2 103988 5348 ? S 02:45 00:00
nobody 27732 0.7 2 103988 5344 ? S 02:45 00:00
nobody 27733 0.5 2 103988 5344 ? S 02:45 00:00
nobody 27734 0.2 2 103988 5340 ? S 02:45 00:00
nobody 27735 0.7 2 103988 5348 ? S 02:45 00:00
nobody 27736 0.3 2 103988 5344 ? S 02:45 00:00
nobody 27737 0.7 2 103988 5348 ? S 02:45 00:00
nobody 27738 0.5 2 103988 5348 ? S 02:45 00:00
nobody 27739 0.7 2 103988 5348 ? S 02:45 00:00
nobody 27740 0.8 2 103988 5352 ? S 02:45 00:00
nobody 27741 0.4 2 103988 5348 ? S 02:45 00:00
nobody 27742 0.5 2 103988 5344 ? S 02:45 00:00
nobody 27743 0.6 2 103988 5344 ? S 02:45 00:00
nobody 27744 0.5 2 103988 5348 ? S 02:45 00:00
nobody 27745 0.7 2 103988 5352 ? S 02:45 00:00
nobody 27746 0.4 2 103988 5348 ? S 02:45 00:00
nobody 27747 0.5 2 103988 5344 ? S 02:45 00:00
nobody 27748 0.6 2 103988 5348 ? S 02:45 00:00
nobody 27749 0.7 2 103988 5352 ? S 02:45 00:00

spwan-cgi
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
www 27760 0 2.4 103452 6320 ? Ss 02:47 00:00
www 27761 0.2 2.1 103976 5548 ? S 02:47 00:00
www 27762 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27763 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27764 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27765 1.4 1.9 103980 5224 ? S 02:47 00:00
www 27766 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27767 0.4 1.9 103980 5220 ? S 02:47 00:00
www 27768 0.5 1.9 103980 5212 ? S 02:47 00:00
www 27769 0.5 1.9 103980 5216 ? S 02:47 00:00
www 27770 2.4 1.9 103980 5236 ? S 02:47 00:01
www 27771 3.1 2 103980 5248 ? S 02:47 00:01
www 27772 2.4 1.9 103980 5236 ? S 02:47 00:01
www 27773 1.3 1.9 103980 5224 ? S 02:47 00:00
www 27774 0.4 1.9 103980 5212 ? S 02:47 00:00
www 27775 0.4 1.9 103980 5212 ? S 02:47 00:00
www 27776 0.3 1.9 103980 5216 ? S 02:47 00:00
www 27777 0.1 1.9 103980 5212 ? S 02:47 00:00
www 27778 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27779 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27780 0.1 1.9 103980 5212 ? S 02:47 00:00
www 27781 0.1 1.9 103980 5212 ? S 02:47 00:00
www 27782 0.1 1.9 103980 5212 ? S 02:47 00:00
www 27783 0 1.9 103980 5212 ? S 02:47 00:00
www 27784 0 1.9 103980 5212 ? S 02:47 00:00
www 27785 0 1.9 103980 5212 ? S 02:47 00:00

6.反应时间
fetches/sec
php-fpm
264.468
269.657
266.5
267.7
267.334
spawn-cgi
246.153
258.742
256.1
256.9
251.6

7.测试结果
php-fpm的使用非常方便,配置都是在php-fpm.ini的文件内
而启动,重启都可以从php/sbin/php-fpm中进行
更方便的是修改php.ini后可以直接使用php-fpm reload进行加载
无需杀掉进程就可以完成php.ini的修改加载
结果显示使用php-fpm可以使php有不小的性能提升
php-fpm控制的进程.cpu回收的速度比较慢.内存分配的很均匀
而spawn-cgi控制的进程CPU下降的很快.而内存分配的比较不均匀.
有很多进程似乎未分配到,而另外一些却占用很高.
可能是由于进程任务分配的不均匀导致的.而这也导致了总体响应速度的下降
而php-fpm合理的分配.导致总体响应的提到以及任务的平均