Creé un archivo de trabajo en la carpeta app/Jobs/MyJob.php y me gustaría ejecutarlo solo una vez, si es posible usando la línea de comandos.
Algo como:
> php MyJob:run
¿Qué comando debo usar para ejecutar un método en este archivo o en el identificador?
ACTUALIZAR
Creé el paquete mxl/laravel-job composer que proporciona el comando Laravel para enviar trabajos desde la línea de comando:
$ 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 El paquete también proporciona una forma de reducir el uso de la clase Job base y tiene una interfaz FromParameters que permite implementar el análisis de parámetros de la línea de comandos y usar el trabajo desde el código PHP y la línea de comandos simultáneamente.
Lea más sobre sus características en la página del paquete GitHub .
RESPUESTA ANTIGUA
Correr
php artisan make:command DispatchJobpara crear un comando artesanal especial que ejecute trabajos.
Abra el archivo DispatchJob.php creado y defina la clase DispatchJob de esta manera:
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()); } }Ahora debe iniciar el trabajador de la cola:
php artisan queue:worky después de eso, puede ejecutar trabajos desde la línea de comandos:
php artisan job:dispatch YourJobNameHereLa forma más sencilla es llamar con el uso de Tinker
Es el comando Laravel que se usa para la depuración, utilícelo ejecutando el siguiente comando desde la raíz del proyecto
php artisan tinkerPara enviar un trabajo en una cola específica desde Tinker
\Queue::pushON('rms', new App\Jobs\UpdateRMS());primer parámetro: nombre de la cola
segundo parámetro - nombre del trabajo
Envíe varios trabajos a la vez a una cola específica
\Queue::bulk([new App\Jobs\UpdateRMS(), new App\Jobs\UpdateRMS()], null, 'rms'); Demostración (producto-servicio es el nombre de mi proyecto) Solo síguelo
Encuentre un trabajo enviado en la cola) mi cola de casos está configurada como Redis
Si está utilizando un QUEUE_DRIVER diferente para sincronizar y desea enviar una cola que ha creado anteriormente, desde la carpeta de su proyecto, ejecute el comando:
php artisan queue:work --queue=MyQueueName Consulta este enlace para configurar una base de datos QUEUE_DRIVER