Heim  >  Artikel  >  php教程  >  php5.3.28更换缓存加速eAccelerator为APC

php5.3.28更换缓存加速eAccelerator为APC

WBOY
WBOYOriginal
2016-06-06 20:13:501452Durchsuche

APC 和 eAccelerator 都是不错的PHP加速缓存,因为eAccelerator有问题没办法才选择 apc 的,建议除非eAccelerator有变态无法解决的问题,才选择apc,毕竟apc也是停止维护的了, php 5.3恐怕没有更好的选择,都往5.4 5.4 5.6发展了,高版本使用zend-opcache。

APC 和 eAccelerator 都是不错的PHP加速缓存,因为eAccelerator有问题没办法才选择apc的,建议除非eAccelerator有变态无法解决的问题,才选择apc,毕竟apc也是停止维护的了,php5.3恐怕没有更好的选择,都往5.4 5.4 5.6发展了,高版本使用zend-opcache。

最近有台新配置的服务器php5.3.28 nginx1.62,还是照常使用eAccelerator?加速,可是就是会不定期出现cpu占用率php-frm死锁的情况,无论怎么调整服务器和php配置都无法解决。出现死锁的情况后,cli模式还是可以照常运行php的,就是无论运行任何一个php页面就会有个cpu99%的php-frm出现,最后运行到502或504。

使用strace -p追踪线程,循环不停出现sched_yield() = 0,直到最后结束,没有其它任何提示了。

网上搜索了半天应该是eAccelerator的东西,内部出现某个while一直循环执行,至于为什么会这样,功力有限。看来只能更换缓存加速插件了,最后决定php原配的APC。

下面就动手吧

1、下载 wget http://pecl.php.net/get/APC-3.1.9.tgz

2、解压和编译
tar zxvf APC-3.1.9.tgz
cd APC-3.1.9
/usr/local/php/bin/phpize
./configure –enable-apc –enable-mmap –enable-apc-spinlocks –disable-apc-pthreadmutex –with-php-config=/usr/local/php/bin/php-config
make
make install
make clean

3、编辑php.ini

找到 extension_dir ,把值改为/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
然后在下面加入
[APC]
extension=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/apc.so”
apc.cache_by_default = On
apc.enabled = On
apc.max_file_size = 1m
apc.shm_segments = 1
apc.shm_size = 64
apc.stat = On
apc.write_lock = On
apc.mmap_file_mask = /tmp/apc.XXXXXX
apc.ttl = 7200
apc.user_ttl = 7200
apc.gc_ttl=3600
apc.num_filters_hint = 1024
apc.file_update_protection=2

具体的配置参数解释看:http://php.net/manual/zh/apc.configuration.php

apc.stat设置成0的话,性能会更好一点,但是设置成0后,修改了PHP文件后必须得重启下PHP才能马上更新内容。对于平时修改比较多的站点来说,还是设置成1比较好。

重启php完成。

eAccelerator就把缓存目录删除,配置php.ini文件里面注释掉就可以了。

安装apc扩展的时候如出现以下错误

# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:???????? 20090626
Zend Module Api No:????? 20090626
Zend Extension Api No:?? 220090626
config.m4:180: warning: AC_CACHE_VAL(PHP_APC_GCC_ATOMICS, …): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from…
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from…
config.m4:180: the top level
config.m4:180: warning: AC_CACHE_VAL(PHP_APC_GCC_ATOMICS, …): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from…
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from…
config.m4:180: the top level

按这个autoconf-2.13即可
wget -c http://soft.vpser.net/lib/autoconf/autoconf-2.13.tar.gz
tar zxvf autoconf-2.13.tar.gz
cd autoconf-2.13/
./configure –prefix=/usr/local/autoconf-2.13
make && make install

export PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf
export PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader

有问题留言!^_^

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn