PHP连接Nginx服务器并解析Nginx日志的方法_php技巧
php与nginx整合 PHP-FPM也是一个第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的,在安装的时候也需要和PHP源码一起编译,也就是说PHP-FPM被编译到PHP内核中,因此在处理性能方面更加优秀;同时它在处理高并发方面也比spawn-fcgi引擎好很多,因此,推荐Nginx+PHP/PHP-FPM这个组合对PHP进行解析。 #fastcgi php与nginx整合 [root@server79 php-5.4.12]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini 拷贝php的启动脚本 [root@server79 fpm]# pwd/root/php-5.4.12/sapi/fpm[root@server79 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm 给启动脚本加可执行权限 [root@server79 fpm]# chmod +x /etc/init.d/php-fpm[root@server79 ~]# vim /usr/local/lnmp/php/etc/php.inicgi.fix_pathinfo=0date.timezone = /Asia/Shanghai[root@server79 ~]# cp /usr/local/lnmp/php/etc/php-fpm.conf.default /usr/local/lnmp/php/etc/php-fpm.conf[root@server79 etc]# vim php-fpm.conf 打开注释pid = run/php-fpm.pid php-fpm.conf文件参数解析 listen = 127.0.0.1:9000 标签user和group用于设置运行FastCGI进程的用户和用户组。需要注意的是,这里指定的用户和用户组要和Nginx配置文件中指定的用户和用户组一致。 user = nginxgroup = nginx 标签max_children用于设置FastCGI的进程数。根据官方建议,小于2GB内存的服务器,可以只开启64个进程,4GB以上内存的服务器可以开启200个进程。 <value name="max_children">5</value> 标签request_terminate_timeout用于设置FastCGI执行脚本的时间。默认是0s,也就是无限执行下去,可以根据情况对其进行修改。 <value name="request_terminate_timeout">0s</value> 标签rlimit_files用于设置PHP-FPM对打开文件描述符的限制,默认值为1024。这个标签的值必须和Linux内核打开文件数关联起来,例如要将此值设置为65535,就必须在Linux命令行执行'ulimit -HSn 65536'。 <value name="rlimit_files">1024</value> 标签max_requests指明了每个children最多处理多少个请求后便会被关闭,默认的设置是500。 pm.max_requests = 500 标签allowed_clients用于设置允许访问FastCGI进程解析器的IP地址。如果不在这里指定IP地址,Nginx转发过来的PHP解析请求将无法被接受。 <value name="allowed_clients">127.0.0.1</value> 5.管理FastCGI进程 /usr/local/php/bin/php-cgi --fpm或者 /usr/local/php/sbin/php-fpm start 建议采用第二种方式启动FastCGI进程。
[root@server79 etc]# /etc/init.d/php-fpm start 配置nginx的主配置文件,打开与php的接口 [root@server79 conf]# pwd/usr/local/lnmp/nginx/conf[root@server79 conf]# vim nginx.confuser nginx;#location ~ /.php$ {root html; fastcgi_pass 127.0.0.1:9000; //本地9000端口fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;include fastcgi.conf;}[root@server79 conf]# nginx -t^C[root@server79 conf]# nginx -s reload^C[root@server79 html]# pwd/usr/local/lnmp/nginx/html[root@server79 html]# cat index.php<?phpphpinfo()?> 测试:浏览器中输入192.168.0.179/index.php,出现php页面
access_log日志格式 log_format main '$server_name$remote_addr$remote_user[$time_local]"$request"' '$status$body_bytes_sent"$http_referer"' '"$http_user_agent""$http_x_forwarded_for"';
server_name : 虚拟主机的主机名称
需求 php代码 /** * Description:按行读取文件内容进行过滤匹配 * * @return array */ function readFileContent ($filename) { $weibo_content = array(); $fh = @fopen($filename, 'r'); if ($fh) { while (! feof($fh)) { $row = fgets($fh, 4096); $row_arr = explode("", $row); if (isset($row_arr[3]) && preg_match('/weibo/', $row_arr[3])) { $weibo_content[] = $row_arr; } } } fclose($fh); return $weibo_content; } |