安裝完,預設是以 prefork MPM 方式執行。
執行 apachectl -l 可發現有 prefork.c 模組:
# apachectl -l Compiled in modules: core.c prefork.c http_core.c mod_so.c
將 perfork 修改為 prefork的方法:
- 編輯 /etc/sysconfig/httpd,拿掉 #HTTPD=/usr/sbin/httpd.worker 的註解
HTTPD=/usr/sbin/httpd.worker
- 再來直接重新啟動 apache 即可。(因為 /etc/httpd/conf.d/php.conf 預設已經有依不同 MPM 模組,載入不同 PHP模組,所以不需做其他修改。)
service httpd restart
- 再執行 apachectl -l 查看目前狀態,應該會有 worker.c 模組。完成。
# apachectl -l Compiled in modules: core.c worker.c http_core.c mod_so.c
其他:
如果使用 phpinfo() 分別在 perfork 和 worker 模式下,查看 PHP設定,可發現有一些地方不一樣。例如,
- 「Scan this dir for additional .ini files」perfork 讀取「/etc/php.d」資料夾,worker 讀取「/etc/php-zts.d」資料夾,所以修改設定要注意改對地方。
- 「Thread Safety」perfork 是「disabled」,worker 是「enabled」資料夾,因為 worker 是多執行緒(thread),所以需要線程(thread)安全。
參考:
How can I change from prefork to worker MPM on CentOS 64bit?
Switching Apache from Prefork to Worker MPM in RHEL / CentOS 5.x / Fedora 13
沒有留言:
張貼留言