如何使用命令行手动运行 laravel/lumen 作业
我已经在文件夹中创建了一个作业文件,如果可能的话,我想使用命令行只运行一次。app/Jobs/MyJob.php
像这样:
> php MyJob:run
我应该使用什么命令来运行此文件或句柄中的方法?
我已经在文件夹中创建了一个作业文件,如果可能的话,我想使用命令行只运行一次。app/Jobs/MyJob.php
像这样:
> php MyJob:run
我应该使用什么命令来运行此文件或句柄中的方法?
更新
我创建了mxl/laravel-job composer包,提供Laravel命令,用于从命令行调度作业:
$ composer require mxl/laravel-job
$ php artisan job:dispatch YourJob # for jobs in app/Jobs directory (App\Jobs namespace)
$ php artisan job:dispatch '\Path\To\YourJob' # dispatch job by its full class name
$ php artisan job:dispatchNow YourJob # dispatch immediately
$ php artisan job:dispatch YourJob John 1990-01-01 # dispatch with parameters
Package 还提供了一种通过使用基类来减少样板代码的方法,并且具有允许同时实现命令行参数解析和使用 PHP 代码和命令行的作业的接口。Job
FromParameters
有关其功能的更多信息,请访问包 GitHub 页面。
旧答案
跑
php artisan make:command DispatchJob
以创建运行作业的特殊工匠命令。
打开创建的文件并定义类,如下所示:DispatchJob.php
DispatchJob
class DispatchJob extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'job:dispatch {job}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Dispatch job';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$class = '\\App\\Jobs\\' . $this->argument('job');
dispatch(new $class());
}
}
现在你应该启动队列工作线程:
php artisan queue:work
之后,您可以从命令行运行作业:
php artisan job:dispatch YourJobNameHere
最简单的方法是使用Tinker打电话
这是用于调试的Laravel命令,通过从项目根目录运行以下命令来使用它
php artisan tinker
从修补工中分派特定队列上的作业
\Queue::pushON('rms', new App\Jobs\UpdateRMS());
第一个参数 - 队列名称
第二个参数 - 作业名称
一次将多个作业分派到特定队列
\Queue::bulk([new App\Jobs\UpdateRMS(), new App\Jobs\UpdateRMS()], null, 'rms');