【问题标题】:How can I apply the hot patch to fix bugs in the symfony project?如何应用热补丁来修复 symfony 项目中的错误?
【发布时间】:2018-07-10 05:15:09
【问题描述】:

我有一个使用 symfony3 的应用程序,一些客户使用它。我打算通过在线下载补丁代码来修复这个错误。

但是你知道,当补丁代码覆盖项目代码时,必须执行以下命令才能使补丁代码生效。

php php bin/console cache:clear --env=prod chmod -R 777 var/tmp

很遗憾,这个命令只能在cli模式下执行;

如何实现这个功能?

最后,请原谅我英语不好。 :simle:

【问题讨论】:

    标签: php symfony symfony-3.4 hotpatching


    【解决方案1】:

    您可以使用Symfony Process Component 来实现:

    use Symfony\Component\Process\Process;
    use Symfony\Component\Process\Exception\ProcessFailedException;
    
    $process = new Process('php bin/console cache:clear --env=prod && chmod -R 777 var/tmp');
    $process->run();
    
    // executes after the command finishes
    if (!$process->isSuccessful()) {
        throw new ProcessFailedException($process);
    }
    
    echo $process->getOutput();
    

    其实你有多种解决方案:

    • 在只有您可以访问的控制器中实现此代码。
    • 如果您使用 capistranoansible 等部署器或任何其他技术,只需添加您要执行的 cli 命令并在部署补丁后触发执行即可。

    您还可以创建一个Symfony Command 来包装您的 cli 命令

    【讨论】:

    • 您好,谢谢!你可能不明白我的问题;热补丁是给我的客户的,他们使用我的项目;我希望他们可以在浏览器上点击几下完成补丁更新;就像一个按钮“点击更新”
    • 您好,您想修复代码中发现的错误吗?那么您将新版本的代码部署到您的生产环境中了吗?如果你愿意,你可以创建一个动作控制器,这样当用户点击“点击更新”时,你在控制器中执行 CLI 代码,然后它就会清除缓存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多