php-从Laravel作业中调用Laravel命令
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-从Laravel作业中调用Laravel命令,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1866字,纯文字阅读大概需要3分钟。
内容图文
![php-从Laravel作业中调用Laravel命令](/upload/InfoBanner/zyjiaocheng/670/681b2951b7744632ab7f043431ec43e0.jpg)
我有一个名为MyCommand的命令,我是从一个名为MyJob的作业中调用它的.从job调用时,我看不到命令??输出.但是,如果我直接从命令行运行命令,则会看到命令输出.
MyCommand.php代码:
namespace App\Console\Commands;
use Illuminate\Console\Command;
class MyCommand extends Command
{
protected $signature = 'mycommand:doit';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$this->info('Process started');
//Some process is done here
$this->info('Process completed');
}
}
MyJob.php代码:
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Artisan;
class MyJob implements ShouldQueue
{
public function __construct()
{
}
public function handle()
{
Artisan::call('mycommand:doit');
}
}
解决方法:
从理论上讲,您不是在终端上运行作业(例如,可能正在排队或安排工作),在终端外运行时不会保存输出.
但是,您仍然可以使用Artisan :: output();获得输出缓冲区.
例:
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Artisan;
class MyJob implements ShouldQueue
{
public function __construct()
{
}
public function handle()
{
Artisan::call('mycommand:doit');
$output = Artisan::output(); // $output is a string
// Do whatever you want with $output
}
}
更新:同步输出
您可以尝试以下方法:
命令示例:
class SlowCommand extends Command
{
protected $signature = "slow";
public function handle()
{
$max = 10;
for ($i = 0; $i < $max; $i++) {
$this->line($i);
sleep(1);
}
}
}
// Synchronous output
Artisan::call("slow");
echo Artisan::output();
// Asynchronous output
$buffer = new ConsoleOutput();
Artisan::call("slow", [], $buffer);
内容总结
以上是互联网集市为您收集整理的php-从Laravel作业中调用Laravel命令全部内容,希望文章能够帮你解决php-从Laravel作业中调用Laravel命令所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。