es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No es posible ejecutar un comando de Laravel Artisan con parámetros utilizando el proceso Symfony.

Estoy intentando iniciar un proceso con Symfony en mi aplicación Laravel en mi servidor de hosting compartido que llamará a un comando Artisan con parámetros de esta manera:

$process = new Process(['/usr/local/bin/php', base_path('artisan'), 'queue:work --stop-when-empty']);
$process->setTimeout(null);
$process->start();

Esto no funciona ya que obtengo el siguiente error:

ERROR: El comando "queue:work --stop-when-empty" no está definido.

¿Quisiste decir alguno de estos?
    queue:batches-table
    queue:clear
    queue:failed
    queue:failed-table
    queue:flush
    queue:forget
    queue:listen
    queue:monitor
    queue:prune-batches
    queue:prune-failed
    queue:restart
    queue:retry
    queue:retry-batch
    queue:table
    queue:work {"exception":"[object] (Symfony\Component\Console\Exception\CommandNotFoundException(code: 0): Comando \"queue:work --stop-when-empty\" no está definido.

El problema está con el parámetro --stop-when-empty, ya que el comando se ejecuta exitosamente sin él. ¿Cómo puedo pasar este parámetro al comando?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para pasar un parámetro al comando, debes separarlo del nombre del comando, de la siguiente manera:

    $process = new Process(['/usr/local/bin/php', base_path('artisan'), 'queue:work', '--stop-when-empty']);
    $process->setTimeout(null);
    $process->start();
    

    Al separar el parámetro --stop-when-empty, Symfony lo pasará al comando en lugar de interpretarlo como parte del nombre del comando. Esto debería resolver el problema que estás experimentando.

Comments are closed.