我正在尝试使用自 PHP 7.4 以来可用的新预加载功能。
我跑来composer install --no-dev --optimize-autoloader
生成项目中所有可用类的列表,并使用以下preload.php
脚本预加载它们:
$files = require 'vendor/composer/autoload_classmap.php';
foreach (array_unique($files) as $file) {
opcache_compile_file($file);
}
并在我的opcache.ini
文件中配置了这个预加载脚本:
opcache.preload=/path/to/preload.php
并重新启动php-fpm
。现在systemctl status php-fpm.service
报告以下警告:
PHP 警告:无法预加载未链接的类 Brick\Money\Context\CashContext:第 16 行 ... 中的未知类型依赖项
PHP 警告:无法预加载未链接的类 Brick\Money\Context\AutoContext:..中的未知类型依赖项. on line 17
PHP Warning: Can't preload unlinked class Brick\Math\BigRational: Unknown type dependencies in ... on line 17
PHP Warning: Can't preload unlinked class Brick\Math\BigInteger: Unknown type dependencies in ... . on line 20
PHP Warning: Can't preload unlinked class Brick\Math\BigDecimal: Unknown type dependencies in ... 第 15 行
“未知类型依赖”是什么意思?如何预加载这些类?
注意:我是有问题的库Brick\Math和Brick\Money的维护者,所以如果需要修改这些库以使其可预加载,我会全力以赴!