php詳解和優化

nginx結合php使用FastCGI方式 apache結合php,php是做爲一個模塊加載到apache中 #(1)FastCGI工做原理 php

1.用戶發送http請求報文給nginx服務器
2.nginx會根據文件url和後綴來判斷請求
3.若是請求的是靜態內容,nginx會將結果直接返回給⽤戶
4.若是請求的是動態內容,nginx會將請求交給fastcgi客戶端,經過fastcgi_pass將這個請求發送給php-fpm
5.php-fpm收到請求後會經過本地監聽的socket交給wrapper
6.wrapper收到請求會生成新的線程調用php動態程序解析服務器
7.若是用戶請求的是博文、或者內容、 PHP會請求MySQL查詢結果
8.php會將查詢到的結果交給Nginx
10.nginx會生成一個響應報文返還給用戶
php-fpm負責接收請求,/etc/php.ini
wrapper生成子進程解析用戶的請求(php文件),配置文件/etc/php-fpm.conf  /etc/php-fpm.d

#(2)php-ini優化nginx

#vim /etc/php.ini
sql.safe_mode = Off       				//打開php的安全模式,控制php執⾏危險函數, 默認是Off,改成On 
expose_php = On         				//關閉php頭部信息, 隱藏版本號, 默認是On,該爲Off
display_error = Off      				//記錄錯誤日誌至後臺,方便追溯
error_reporting = E_WARNING & E_ERROR 
memory_limit = 128M    					//每一個腳本時間最大內存
upload_max_filesize = 2M    			//上傳文件最大許可,默認2M,建議調整爲16,32M
allow_url_fopen = On     				//禁止遠程執行phpshell,默認On,建議Off
date.timezone = PRC     				//時區調整,默認PRC, 建議調整爲Asia/Shanghai

優化後的配置文件詳情sql

sql.safe_mode = Off
expose_php = Off
display_error = Off
error_reporting = E_WARNING & E_ERROR
log_errors = On
error_log = /var/log/php_error.log
upload_max_filesize = 50M
allow_url_fopen = Off
date.timezone = Asia/Shanghai

#(3)php-fpm優化 1.php-fpm生產環境配置文件,適合4核16G和8核16Gshell

# cat /etc/php-fpm.d/www.conf
[global]
pid = /var/run/php-fpm.pid
error_log = /var/log/php/php-fpm.log
log_level = warning
rlimit_files = 655350
events.mechanism = epoll
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
listen.owner = www
listen.group = www
listen.mode = 0660
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 512
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 30
pm.process_idle_timeout = 15s;
pm.max_requests = 2048
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php/php-www.log 
php_admin_flag[log_errors] = on
request_slowlog_timeout = 5s
slowlog = /var/log/php/php-slow.log

2.php-fpm配置詳解apache

[global]
pid = /var/run/php-fpm.pid												//pid設置, 記錄程序啓動後pid
error_log = /var/log/php/php-fpm.log									//php-fpm程序啓動錯誤日誌路徑
log_level = warning														//錯誤級別,默認: notice.
rlimit_files = 655350													//文件打開描述符的rlimit限制
events.mechanism = epoll												//epoll模型
[www]
user = nginx															//啓動進程的用戶和組
group = nginx
listen = 127.0.0.1:9000													//fpm監聽端口
listen.owner = www
listen.group = www
listen.mode = 0660
listen.allowed_clients = 127.0.0.1										//容許訪問FastCGI進程的IP,any不限制
pm = dynamic															//pm設置動態調度
pm.max_children = 512													//同一時刻最大的php-fpm子進程數量
pm.start_servers = 10													//動態方式下的起始php-fpm進程數量
pm.min_spare_servers = 10												//動態方式下服務器 空閒時最小php-fpm進程數量
pm.max_spare_servers = 30												//動態 方式下服務器 空閒時最大php-fpm進程數量
pm.process_idle_timeout = 15s;											//空閒超時時間
pm.max_requests = 2048													//最大請求
php_flag[display_errors] = off											//FPM狀態頁面,用於監控php-fpm狀態使用
php_admin_value[error_log] = /var/log/php/php-www.log 
php_admin_flag[log_errors] = on
request_slowlog_timeout = 5s											//配置php慢查詢,以及慢查詢記錄日誌位置
slowlog = /var/log/php/php-slow.log
相關文章
相關標籤/搜索