# php優化
## php.ini優化
```
//打開php的安全模式,控制php執行危險函數, 默認是Off,改為On
sql.safe_mode = Off
//關閉php頭部信息, 隱藏版本號, 默認是On,該為Off
expose_php = On
//錯誤信息輸出控制
display_error = Off
error_reporting = E_WARNING & E_ERROR
//記錄錯誤日志至后臺, 方便追溯
log_errors = On
error_log = /var/log/php_error.log
//每個腳本時間最大內存
memory_limit = 128M
//上傳文件最大許可,默認2M, 建議調整為16,32M
upload_max_filesize = 2M
//禁止遠程執行phpshell,默認On, 建議Off
allow_url_fopen = On
//時區調整,默認PRC, 建議調整為Asia/Shanghai
date.timezone = PRC
//整體優化后配置文件
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
```
## php-fpm優化
```
[global]
#pid設置, 記錄程序啟動后pid
pid = /var/run/php-fpm.pid
#php-fpm程序啟動錯誤日志路徑
error_log = /soft/log/php/php-fpm_error.log
# 錯誤級別. 可用級別為: alert(必須立即處理),error(錯誤情況), warning(警告情況), notice(一般重要信息), debug(調試信息). 默認: notice.
log_level = warning
#設置文件打開描述符的rlimit限制.
rlimit_files = 65535
events.mechanism = epoll
#啟動進程的用戶和組
[www]
user = www
group = www
# fpm監聽端口
listen = 127.0.0.1:9000
# unix socket設置選項,如果使用tcp方式訪問,這里注釋即可。
listen.owner = www
listen.group = www
# 允許訪問FastCGI進程的IP,any不限制
listen.allowed_clients = 127.0.0.1
# pm設置動態調度設置進程管理器如何管理子進程。可用值:static,ondemand,dynamic。必須設置。
static – 子進程的數量是固定的(pm.max_children)。
ondemand – 進程在有需求時才產生(當請求時才啟動。與 dynamic 相反,在服務啟動時 pm.start_servers 就啟動了。
dynamic – 子進程的數量在下面配置的基礎上動態設置。
pm = dynamic
# 靜態方式下開啟的php-fpm進程數量
pm.max_children = 200
# 動態方式下的起始php-fpm進程數量
pm.start_servers = 20
# 動態方式下服務器空閑時最小php-fpm進程數量
pm.min_spare_servers = 10
# 動態方式下服務器空閑時最大php-fpm進程數量
pm.max_spare_servers = 30
# 最大請求
pm.max_requests = 1024
pm.process_idle_timeout = 15s;
# FPM狀態頁面,用于監控php-fpm狀態使用
pm.status_path = /status
# 錯誤日志
php_flag[display_errors] = off
php_admin_value[error_log] = /soft/log/php/php-www_error.log
php_admin_flag[log_errors] = on
# 配置php慢查詢, 以及慢查詢記錄日志位置
request_slowlog_timeout = 5s
slowlog = /soft/log/php/php-slow.log
```
- 簡介
- php
- php基礎
- php常用數組函數
- php常用字符串函數
- php魔術方法
- php高階
- swoole
- php優化
- workerman
- PHP底層運行機制和原理
- php框架
- laravel
- 前端
- react
- 爬蟲
- Scrapy
- Linux
- IO復用
- nginx
- nginx進程工作原理
- nginx配置
- 正向代理反向代理
- UPSTREAM
- SERVER
- HTTPS
- queue
- kafka
- redis
- DB
- mysql
- 存儲引擎
- 索引
- 鎖
- 觸發器
- 分庫分表
- 三范式
- 負載均衡
- 事務
- EXPLAN
- mysql死鎖
- mysql索引覆蓋與回表
- mysql聚簇索引與非聚簇索引
- NoSql
- memcache
- redis
- mongo
- 網絡協議
- tcp與udp
- https與http
- 架構
- LNMP架構下HTTP請求的調用次序
- 數據結構&算法
- 基礎數據結構
- Linked List
- array
- stack
- queue
- tree
- hash
- heap
- 常見算法
- 排序算法
- 查找算法
- 其他
- php的一些坑
- 常問面試題
- 技術面試最后反問面試官的話
- hr
- redis緩存擊穿、穿透、雪崩
- 面試中回答的不好的問題
- web攻擊防范