ITPub博客

首页 > > > 部署LAMP发布PHP网站- PHP启动

部署LAMP发布PHP网站- PHP启动

作者:longmanma 时间:2019-12-12 17:57:10 0 删除 编辑

四、PHP启动

[root@apache_251 ~]# cp /usr/src/php-7.3.4/sapi/fpm/php-fpm.service /etc/systemd/system/

[root@apache_251 ~]# systemctl daemon-reload

[root@apache_251 ~]# systemctl enable php-fpm

[root@apache_251 ~]# systemctl start php-fpm

五、相关知识补充

#mysqli 说明

MYSQL 也叫 Original MySQL,PHP4版本的MYSQL扩展,从PHP5起已经被废弃,并别从PHP7开始已经被移除。

MYSQLI 叫做 “MySQL增强扩展”。

MYSQLND MYSQL NATIVE DIRVER 叫做MYSQL “官方驱动”或者更加直接点的叫做“原生驱动”

PDO PHP Data Objects PHP数据对象,是PHP应用中的一个数据库抽象层规范。

#opcache

原理:

其实非常简单,opcache只是把把PHP执行后的数据(opcode)缓存到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的opcode代码从而提高速度,降低服务器负载

效果: 在实际应用当中能使QPS数大致增加3倍以上

注意:

启用opcache后,典型的问题就是由于opcache的缓存加速机制导致的代码变更后无法立即看到效果。php代码被转换成可立即执行的“机器码”后会有一定的缓存时间后才会去检查原始的PHP文件是否变动过,具体视配置项opcache.revalidate_freq设置的秒数情况而定;这样就会导致某些情况下明明更新了PHP文件中的代码,但执行后却看不到改变后的效果,这就是因为opcache检查php文件变动的间隔时间尚未结束所导致。 这个问题并不是bug,而要视具体生产环境来设定opcache.revalidate_freq值,倘若php代码很少变动,建议该值设置的大一些,可减少opcahce由于检查php文件变动而带来的额外开销,比如7200 那么在变动php文件后如何才能快速降低opcache缓存带来的这种问题呢?最简单的方法就是更新代码后重启下php-fpm(nginx fast-cgi模式)或apache(apache-handler模式)。当然还可以自己书写一个php脚本,调用opcache_reset()函数重置所有opcache缓存字节码,或者使用opcache_invalidate(PHPfileDir,true)重置指定php文件的缓存字节码。

opcache配置指令详解

[Zend Opcache]

zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so

opcache.enable=1 ;启用操作码缓存

opcache.enable_cli=1 ;仅针对CLI环境启用操作码缓存

opcache.memory_consumption=128 ;共享内存大小,单位MB

opcache.interned_strings_buffer=8 ;存储临时字符串的内存大小,单位MB

opcache.max_accelerated_files=4000 ;哈希表中可存储的脚本文件数量上限

;opcache.max_wasted_percentage=5 ;浪费内存的上限,以百分比计

;opcache.use_cwd=1;附加改脚本的工作目录,避免同名脚本冲突

opcache.validate_timestamps=1 ;每隔revalidate_freq 设定的秒数 检查脚本是否更新

opcache.revalidate_freq=60 ;

;opcache.revalidate_path=0 ;如果禁用此选项,在同一个 include_path 已存在的缓存文件会被重用

;opcache.save_comments=1 ;禁用后将也不会加载注释内容

opcache.fast_shutdown=1 ;一次释放全部请求变量的内存

opcache.enable_file_override=0 ; 如果启用,则在调用函数file_exists(), is_file() 以及 is_readable() 的时候, 都会检查操作码缓存

;opcache.optimization_level=0xffffffff ;控制优化级别的二进制位掩码。

;opcache.inherited_hack=1 ;PHP 5.3之前做的优化

;opcache.dups_fix=0 ;仅作为针对 “不可重定义类”错误的一种解决方案。

;opcache.blacklist_filename="" ;黑名单文件为文本文件,包含了不进行预编译优化的文件名

;opcache.max_file_size=0 ;以字节为单位的缓存的文件大小上限

;opcache.consistency_checks=0 ;如果是非 0 值,OPcache 将会每隔 N 次请求检查缓存校验和

opcache.force_restart_timeout=180 ; 如果缓存处于非激活状态,等待多少秒之后计划重启。

;opcache.error_log="" ;OPcache模块的错误日志文件

;opcache.log_verbosity_level=1 ;OPcache模块的日志级别。致命(0)错误(1) 警告(2)信息(3)调试(4)

;opcache.preferred_memory_model="" ;OPcache 首选的内存模块。可选值包括: mmap,shm, posix 以及 win32。

;opcache.protect_memory=0 ;保护共享内存,以避免执行脚本时发生非预期的写入。 仅用于内部调试。

;opcache.mmap_base=null ;在Windows 平台上共享内存段的基地址

六、FAQ

问题一

可能遇到的问题

centos7 编译libiconv ./stdio.h:1010:1: 错误: ‘gets’未声明(不在函数内)

make报错:

./stdio.h:1010:1: 错误: ‘gets’未声明(不在函数内)

make[2]: *** [progname.o] 错误 1

make[2]:正在离开目录 `/home/lmos/libiconv-1.14/srclib'

make[1]: *** [all] 错误 2make[1]:正在离开目录 `/home/lmos/libiconv-1.14/srclib'

make: *** [all] 错误 2

cd srclib 目录

sed -i -e '/gets is a security/d' ./stdio.in.h

问题二

checking size of off_t... 0

configure: error: off_t undefined; check your library configuration

# 添加搜索路径到配置文件

echo '/usr/local/lib64

/usr/local/lib

/usr/lib

/usr/lib64'>>/etc/ld.so.conf

# 更新配置

ldconfig -v

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2730/viewspace-3146144/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-12-18

  • 博文量
    492
  • 访问量
    11996