У меня есть приложение, использующее symfony3, и некоторые клиенты его используют. Я планирую исправить ошибку, загрузив код патча онлайн.
Но вы знаете, что когда код исправления перезаписывает код проекта, вы должны выполнить следующую команду, чтобы код исправления вступил в силу.
php
php bin/console cache:clear --env=prod
chmod -R 777 var/tmp
К сожалению, эту команду можно выполнить только в режиме cli;
Как я могу реализовать эту функцию?
Наконец, простите, пожалуйста, за мой плохой английский. : simle:






Для этого можно использовать Компонент процесса Symfony:
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();
На самом деле у вас есть несколько решений:
вы также можете создать Команда Symfony, чтобы обернуть ваши команды cli
Привет! Вы хотите исправить ошибку, обнаруженную в коде, верно? Итак, вы развертываете новую версию кода в своей производственной среде? Если вы хотите, вы можете создать контроллер действий, чтобы, когда пользователь нажимает «Щелкните для обновления», вы выполняете код CLI внутри контроллера, а затем он очищает кеш, вот и все.
Привет спасибо! вы можете не понимать мою проблему; горячий патч для моих клиентов, они используют мой проект; Я надеюсь, что они смогут завершить обновление патча несколькими щелчками мыши в браузере; как кнопка "Нажмите, чтобы обновить"