php - Opcache 预加载并缺少 App_KernelProdContainer.preload.php

标签 php symfony symfony4 preload opcache

按照文档操作后,我的新 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.php 重命名为 srcApp_KernelProdContainer.preload.php 还是我遗漏了其他内容?

最佳答案

不,您不应该将此文件直接添加到您的 PHP 设置中,因为您发现它会使整个事情变得非常脆弱。您也不应该重命名它或任何其他内容,因为它是自动生成的。

Symfony 在后面的版本中所做的是创建一个“预加载”文件。

Symfony 4 flex 配方包括 this one .

<?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+ 上你有一些东西 like this .

请注意,此文件需要有条件地预加载脚本。这样,如果它不存在,它不会仅仅杀死 PHP 解释器。

如果您当前没有此文件;您可以手动创建它,或者只是从配方中复制它。

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

关于php - Opcache 预加载并缺少 App_KernelProdContainer.preload.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69208514/

相关文章:

symfony - 如何在symfony2的表单类型类中获取学说存储库?

php - 替换/装饰 `translation.reader`

php - 将 Symfony2 应用程序部署到 Azure Web 托管上

symfony - Doctrine :多对多在事件监听器内删除关联对象

doctrine-orm - Symfony 4 Doctrine 2 自定义 NamingStrategy 如何

交响乐团 : Overriding Twig's routing path function

php日期差异计算添加额外的天数

php - Paypal 完整日期格式

php - propel 2,mysql - 反向没有错误,没有创建 schema.xml

PHP session 困惑