I have created a Job file in the folder app/Jobs/MyJob.php and i would like to run it just once, if its possible using command line.

Something like:

> php MyJob:run

what command should I use to run a method in this file or the handle?

推荐答案

UPDATE

我创建了mxl/laravel-job composer包,提供了Laravel命令,用于从命令行分派作业(job):

$ 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 also provides a way to reduce boilerplate by using base Job class and has FromParameters interface that allows to implement command line parameters parsing and use job from PHP code and command line simultaneously.

Read more about its features at the package GitHub page.

OLD ANSWER

php artisan make:command DispatchJob

创建运行作业(job)的特殊artisan命令.

Open created DispatchJob.php file and define DispatchJob class like this:

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());
    }
}

Now you should start queue worker:

php artisan queue:work

之后,您可以从命令行运行作业(job):

php artisan job:dispatch YourJobNameHere

Laravel相关问答推荐

未将Laravel Blade属性传递给组件或类

如何在 Laravel 中获取特定月份的最后一个日期?

Livewire 基于下拉 Select 自动填充输入框

分页计数(*)查询问题

Laravel 连接表

如何在 Laravel 中使用内存数据库的完整测试套件之前迁移和 seeder ?

指令allow_call_time_pass_reference警告

我在哪里放置事件侦听器和处理程序?

Laravel 5文件夹 struct 中的文件保存在哪里?

如何监控 Laravel 队列是否正在运行?

Heroku 上的 Laravel 队列工作者

Laravel timestamps() 不会创建 CURRENT_TIMESTAMP

在 AWS 上找不到 Laravel 5 类Collective\Html\HtmlServiceProvider

Laravel 中的单会话登录

Laravel 如何从子域 URL 中删除api前缀

Mac OS X 需要 Mcrypt PHP 扩展

使用哪个 Auth::check() 或 Auth::user() - Laravel 5.1?

判断行是否存在,Laravel

如何在 Laravel 中显示动态复选框的旧数据?

Laravel 迁移 - 在表中添加判断约束