php7.4预加载功能测试和记录
前言
php7.4的预加载功能可以把写的类库文件预先加载,就样就不用在每次请求的时候去加载那些文件,这种方式使得php的一些框架能进一步提高性能,目前才刚出两个版本修复,测试过程中也出现啦一些问题下面记录下来帮助同样想使用这个功能的人少踩坑。
第一次测试
测试时间 2010-01-01
window
测试环境 window10+nginx+php7.4.1
启动服务的时候会报一些警告 PHP Warning: Can't preload unlinked class 但是不影响服务的启动,可以正常处理php请求,一些没有依赖的类在请求中也没有重新加载PHP类库文件。
另外经测试。类里面使用const global等关键字并不影响预加载。
另外注意php7.4.2版本里windows平台下已经禁用啦预加载功能
linux
测试环境ubuntu nginx+docker+php7.4.0/1
本来想linux下应该比windows下顺利的,但是情况却是还不如windows下面的效果,同样的预加载脚本在linux上会导致php-fpm直接崩溃,也就是服务根本就起不来。一直显示
NOTICE: Finishing ...
NOTICE: exiting, bye-bye!
因为用的是用的是php7.4-fpm-alpine镜像 于是换成啦 php7.4-fpm镜像 ,启动容器服务时正常,并且也可以看到php错误日志里会有一些警告 PHP Warning: Can't preload unlinked class ,单独一个页面输出phpinfo也正常。但是当你访问自己的系统时会出现 503 错误,把预加载脚本关闭掉后再打开系统就正常啦。所以肯定跟预加载有关
第二次测试
测试时间 2010-01-24
因为出啦php7.4.2 日志说明 windows平台下已经禁用所以就没有测试,直接测试的linux平台,环境还是上一次测试的环境。情况依旧存在,这一另有一个发现,使用alpine版本的时候把预加载脚本中的类库一个一个删除掉测试,发现是因为部分类库存在未知问题才导致php-fpm崩溃启动不起来。删除掉后可以正常启动服务并且打开系统。