php5.5以上版本已经内置了zend OpCache。通过配置zend opCache模块,将预编译的php字节码加载到共存内存中,省去了每次加载php文件和编译php代码的开销,可以极大提高php性能。
opcache模块常用配置如下
#配置响应时间
sed -i 's/max_execution_time = 30/max_execution_time = 0/' /usr/local/php/lib/php.ini
#配置post大小
sed -i 's/post_max_size = 8M/post_max_size = 150M/' /usr/local/php/lib/php.ini
#配置上传文件大小
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 100M/' /usr/local/php/lib/php.ini
#设定错误输出级别
sed -i 's:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT:error_reporting = E_ALL:' /usr/local/php/lib/php.ini
#启用php性能优化
#启用Zend Optimizer优化开关
sed -i 's:;opcache.enable=0:opcache.enable=1:' /usr/local/php/lib/php.ini
#共享内存的大小, 总共能够存储多少预编译的 PHP 代码(单位:MB),推荐128M
sed -i 's:;opcache.memory_consumption=64:opcache.memory_consumption=128:' /usr/local/php/lib/php.ini
#暂存池中字符串的占内存总量.(单位:MB), 推荐 8
sed -i 's:;opcache.interned_strings_buffer=4:opcache.interned_strings_buffer=8:' /usr/local/php/lib/php.ini
#最大缓存的文件数目 200 到 100000 之间,推荐 4000
sed -i 's:;opcache.max_accelerated_files=2000:opcache.max_accelerated_files=4000:' /usr/local/php/lib/php.ini
#;内存“浪费”达到此值对应的百分比,就会发起一个重启调度
.sed -i 's:;opcache.max_wasted_percentage=5:opcache.max_wasted_percentage=5:' /usr/local/php/lib/php.ini
#2s检查一次文件更新 注意:0是一直检查不是关闭,推荐 60
sed -i 's:;opcache.revalidate_freq=2:opcache.revalidate_freq=2:' /usr/local/php/lib/php.ini
#是否保存文件/函数的注释 如果apigen、Doctrine、 ZF2、 PHPUnit需要文件注释,推荐 0
sed -i 's:;opcache.save_comments=1:opcache.save_comments=0:' /usr/local/php/lib/php.ini
#打开快速关闭, 打开这个在PHP Request Shutdown的时候会收内存的速度会提高
sed -i 's:;opcache.fast_shutdown=0:opcache.fast_shutdown=1:' /usr/local/php/lib/php.ini
opCache其他一些配置说明
#是否在CLI(即命令行时)启用opcache;
opcache.enable_cli=0
#如果置为1,则将当前路径加入到文件key中,以避免可能产生的同文件名的文件key冲突;
opcache.use_cwd=1
#开启文件时间戳验证;
opcache.validate_timestamps=1
##允许或禁止在 include_path 中进行文件搜索的优化;
opcache.revalidate_path=0
#允许覆盖文件存在(file_exists等)的优化特性;
opcache.enable_file_override=0
#定义启动多少个优化过程;
opcache.optimization_level=0xffffffff
#启用此Hack可以暂时性的解决”can’t redeclare class”错误.;
opcache.inherited_hack=1
#启用此Hack可以暂时性的解决”can’t redeclare class”错误.;
opcache.dups_fix=0
#设置不缓存的黑名单;
opcache.blacklist_filename=
#通过文件大小屏除大文件的缓存.默认情况下所有的文件都会被缓存;
opcache.max_file_size=0
#由于计算校验值有损性能,这个指令应当紧紧在开发调试的时候开启.;
opcache.consistency_checks=0
#从缓存不被访问后,等待多久后(单位为秒)调度重启;
opcache.force_restart_timeout=180
#错误日志文件名.留空表示使用标准错误输出(stderr);
opcache.error_log=
#将错误信息写入到服务器(Apache等)日志;
opcache.log_verbosity_level=1
#内存共享的首选后台.留空则是让系统选择;
opcache.preferred_memory_model=
#防止共享内存在脚本执行期间被意外写入, 仅用于内部调试.;
opcache.protect_memory=0
#仅允许路径是以指定字符串开始的 PHP 脚本调用 OPcache API 函数。默认值为空字符串 "",表示不做限制。;
opcache.restrict_api=
#在 Windows 平台上共享内存段的基地址。 所有的 PHP 进程都将共享内存映射到同样的地址空间。使用此配置指令避免“无法重新附加到基地址”的错误;
opcache.mmap_base= ;
opcache.file_cache= ;
opcache.file_cache_only=0 ;
opcache.file_cache_consistency_checks=1 ;
opcache.file_cache_fallback=1 ;
opcache.huge_code_pages=1
php启用opcache扩展
-
编译时php时添加
-enable-opcache
默认opcache加速是关闭的,需要配置为启用。 -
在php.ini中配置启用
extension=opcache.so
- 配置opcache参数
#启用Zend Optimizer优化开关
opcache.enable=1
#共享内存的大小, 总共能够存储多少预编译的 PHP 代码(单位:MB),推荐128M
opcache.memory_consumption=128
#暂存池中字符串的占内存总量.(单位:MB), 推荐 8
opcache.interned_strings_buffer=8
#最大缓存的文件数目 200 到 100000 之间,推荐 4000
opcache.max_accelerated_files=4000
#;内存“浪费”达到此值对应的百分比,就会发起一个重启调度.
opcache.max_wasted_percentage=5
#2s检查一次文件更新 注意:0是一直检查不是关闭,推荐 60
opcache.revalidate_freq=2
#是否保存文件/函数的注释 如果apigen、Doctrine、 ZF2、 PHPUnit需要文件注释,推荐 0opcache.save_comments=0
#打开快速关闭, 打开这个在PHP Request Shutdown的时候会收内存的速度会提高
opcache.fast_shutdown=1
网友评论