【发布时间】:2019-05-24 16:04:59
【问题描述】:
我正在使用两个框架,即 Laravel 和 Symfony,用于两个相互关联的应用程序。两者都有 bash 脚本。
现在,我想在 Symfony 的 bash 脚本中编写 'php artisan down' 命令,这样如果我将代码合并到 Symfony,那么两个应用程序都会停止运行。
如何在 Symfony 框架中编写 Laravel artisan 命令?
【问题讨论】:
我正在使用两个框架,即 Laravel 和 Symfony,用于两个相互关联的应用程序。两者都有 bash 脚本。
现在,我想在 Symfony 的 bash 脚本中编写 'php artisan down' 命令,这样如果我将代码合并到 Symfony,那么两个应用程序都会停止运行。
如何在 Symfony 框架中编写 Laravel artisan 命令?
【问题讨论】:
它应该像任何其他命令一样工作:
#!/bin/bash
php /full/project/path/artisan down
只写完整路径。
【讨论】:
//in your symfony project
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
public function processCmd() {
$process = new Process('php /absolute/path/to/project/artisan down');
$process->run();
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
echo $process->getOutput();
}
Laravel 也使用了相同的 symfony 控制台组件! 所以如果你想在 Laravel 中运行一些东西,你可以使用上面相同的代码。
示例:
//in your laravel project
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
public function processCmd() {
$process = new Process('supervisorctl stop all');
$process->run();
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
echo $process->getOutput();
}
附注:
如果你想运行多个命令,你可以传递一个数组:
$process = new Process(array('ls', '-lsa'));
【讨论】: