Laravel:从App :: call()返回一个值

时间:2015-08-05 06:45:22

标签: php laravel artisan

我在这里走了一段路;我试图将一个长期运行的脚本指向Artisan。 App::call()是否有可能返回字符串值,甚至可能在长时间运行的脚本完成后发送电子邮件?

我试图寻找更多关于此的信息,但是假设如果Artisan正在运行我可以将用户重定向到类似等待页面的东西,可能是循环gif吗?

1 个答案:

答案 0 :(得分:1)

Queue::push()与适当的驱动程序(可能是数据库)一起使用,将长时间运行的作业推送到队列中。

长时间运行的工作应该做的最后一件事是发送一些表明它已经完成。

以下是一些示例代码:

Queue::push(function($job) use ($id)
{
    Artisan::call('my-command', ['arg1', 'arg2']);

    $job->delete();
});

// Then at the end of your my-command script:
$jobModel = LongRunningJob::find($id);
$jobModel->finishedDate = Carbon::now();
$jobModel->save();

当然,您可以轮询数据库以确定长时间运行的命令是否已完成。