Opcache预加载和丢失App_KernelProdContainer.preload.php &



在遵循文档之后,我的新OPCache设置是这样的:

opcache.preload_user=www-data
opcache.preload=/var/www/vhosts/.../httpdocs/.../var/cache/prod/App_KernelProdContainer.preload.php
opcache.memory_consumption=1024
opcache.interned_strings_buffer=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0

默认情况下,在var/cache/prod文件夹中有一个名为srcApp_KernelProdContainer.preload.php的文件。

删除/cache文件夹&重新启动PHP-FPM,未创建App_KernelProdContainer.preload.php

我应该重命名App_KernelProdContainer.preload.phpsrcApp_KernelProdContainer.preload.php还是我错过了什么?

不,您不应该将该文件直接添加到PHP设置中,因为正如您所发现的那样,这会使整个过程变得非常脆弱。您也不应该重命名它或任何东西,因为它是自动生成的。

Symfony在后来的版本中做的是创建一个"preload"文件。

Symfony 4 flex配方包含了这个。

<?php
if (file_exists(dirname(__DIR__).'/var/cache/prod/srcApp_KernelProdContainer.preload.php')) {
require dirname(__DIR__).'/var/cache/prod/srcApp_KernelProdContainer.preload.php';
}
if (file_exists(dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php')) {
require dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php';
}

在Symfony 5.1+上,你有这样的东西。

注意这个文件有条件地需要预加载脚本。这样,即使它不存在,它也不会直接终止PHP解释器。

如果你目前没有这个文件;你可以手动创建,或者直接从食谱中复制。

这添加文件到php.ini上的opcache.preload设置,而不是直接生成预加载脚本。

相关内容

  • 没有找到相关文章

最新更新