我在这里走了一段路;我试图将一个长期运行的脚本指向Artisan。 App::call()
是否有可能返回字符串值,甚至可能在长时间运行的脚本完成后发送电子邮件?
我试图寻找更多关于此的信息,但是假设如果Artisan正在运行我可以将用户重定向到类似等待页面的东西,可能是循环gif吗?
答案 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();
当然,您可以轮询数据库以确定长时间运行的命令是否已完成。