[精讚] [會員登入]
193

[Freebsd8] PHP<5.5 安裝APC

Freebsd8 上(php<5.5版本)安裝 pecl-APC

此文完整連結 http://n.sfs.tw/10581

複製連結 [Freebsd8] PHP<5.5 安裝APC@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2017-01-09 11:22:00 最後編修
2017-01-09 11:21:18 By 張○○
 

搞好久....

Alternative PHP Cache (APC) 是 PHP 的程式碼快取,讓你的程式在第一次執行時編好,接下來的存取就不必再重編以加快速度。

一、安裝

# cd /usr/ports/www/pecl-APC/; make install

二、設定 php.ini

# vi /usr/local/etc/php.ini

最下面加入:
[apc]
apc.enabled=1
apc.shm_size="32M"
apc.shm_segments=2
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1

三、重啟APACHE 出錯

PHP Fatal error:  PHP Startup: apc_shm_create: shmget(0, 67108864, 914) failed: Invalid argument. It is possible that the chosen SHM segment size is higher than the operation system allows. Linux has usually a default limit of 32MB per segment. in Unknown on line 0
PHP Fatal error:  PHP Startup: apc_shm_attach: shmat failed: in Unknown on line 0
PHP Fatal error:  PHP Startup: apc_sem_create: semget(0,...) failed: in Unknown on line 0

解決:
# vi /etc/sysctl.conf

加入
kern.ipc.shmmax=134217728
kern.ipc.shmall=32768

重新啟動 sysctl 就不必重開機
# /etc/rc.d/sysctl restart

檢查參數
# sysctl -a | grep 'shm'
kern.ipc.shm_allow_removed: 0
kern.ipc.shm_use_phys: 0
kern.ipc.shmall: 32768
kern.ipc.shmseg: 128
kern.ipc.shmmni: 192
kern.ipc.shmmin: 1
kern.ipc.shmmax: 134217728  <==可用值達128MB

四、再重啟出錯

[apc-error] apc_sem_create: semget(0,...) failed: No space left on device

解決

清除 IPCS

# ipcs -s -t | awk '/^s/ { print $2 ; }' | xargs -L 1 ipcrm -s

五、監控程式:

複製apc到你的網頁
# cp /usr/local/share/doc/APC/apc.php /usr/local/www/apache22/data

修改 apc.php
defaults('ADMIN_USERNAME','axer');          // Admin Username
defaults('ADMIN_PASSWORD','<你的密碼,一定要修改才能使用>');  

六、phpinfo 檢查

感動到不行~~終於成功了,花了6個多小時

參考資料

[1] http://blog.wu-boy.com/2008/06/05/275/

[2] http://kaworu.jpn.org/kaworu/2008-08-26-1

補充 100/02/14

由於一直發現我的系統不論怎麼設定,就是只能用 30MB 的cache : from apc.php
1 Segment(s) with 30.0 MBytes
(mmap memory, IPC semaphore locking)

怪異的是同樣的設定和OS,另一台伺服器就可以順利運作到 >30MB,後來上網查了一下,原來這是3.0.x 版的bug,如果可用記憶體大於2G時,就會出現這個bug,因此我將他upgrade 到 3.1.6,同時 php.ini 調整到128MB,現在我的實體記憶體>2G,同時apc也可以使用>30MB的記憶體了。

apc.shm_size=128M

1 Segment(s) with 128.0 MBytes
(IPC shared memory, IPC semaphore locking)

如果出現這樣的錯誤:
apc_sem_lock: semop(-1) failed

表示 apc cache 記憶體啟用失敗。-1 代表沒有取得到配置的記憶體。請查看 第三項的說明。


原文 2011-01-13 01:56:52

你可能感興趣的文章

設定友善的FREEBSD shell環境 FREEBSD 的原始SHELL很不友善,以下設定可以讓你的FREEBSD 很友善,和CENTOS差不多,這樣子FREEBSD 就有好用的介面。

[FREEBSD] 在FreeBSD 如何使用 USB 隨身碟? 在FreeBSD 如何使用 USB 隨身碟?

[Freebsd] 建立ramdisk Freebsd 建立ramdisk,作為高速的暫存空間

[Freebsd] 使用 ADSL 撥接上網 Freebsd上要使用 ADSL 撥接上網,該如何設定?

[FREEBSD] 使用 logrotate 來管理及備份日誌檔 Unix 系統中的日誌檔存放在 /var/log/ 中,可供我們查錯及觀察使用。日誌檔最大的問題是會不斷的長大。

Freebsd shell 的日期date表示法 Freebsd 的日期date功能超級強大,學會會很方便。

[Freebsd] 利用pf達成port forwarding 及nat 為了達成port forwarding 及NAT 的功能,不斷思考加上試了三天終於試出來。

[FreeBSD] 查看檔案詳細資訊 利用stat查看檔案詳細資訊

[Freebsd] 使用者的定時排程 crontab Freebsd 下若使用者要建立自己的 crontab,方法和 root來建有一些不同。

[Freebsd10] 使用者的crontab Freebsd 使用者的排程crontab和 root 層級的不太一樣

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

看懂DSUB DVI HDMI USB等各式影音接頭 看懂DSUB DVI HDMI等各式影音接頭

[JAVA] JWS, JWT, JWE, JOSE是什麼? [JAVA] JWS, JWT, JWE, JOSE是什麼?非常的複雜,儘量來搞清楚..

一個邏輯的錯誤刪了全部檔案的經驗 今天本來想做一件很簡單的事,但卻足足浪費我多一倍的時間,再加上刪掉我全部的檔案,原因只是因為我自己的邏輯錯誤。

外匯課程經驗 有天遇到某個朋友的正妹朋友,說她有個很棒的外匯投資課程,要我們去聽,只收場地費200大洋。她又說續效最差一個月也有1%,誰還在苦哈哈上班?