Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

501
Views
El programa de comandos de Laravel no funciona correctamente

Estoy construyendo un proyecto con Laravel 7.28 en localhost. Necesito actualizar un PDF cada hora. Para el principio creé un comando:

 <?php namespace App\Console\Commands; use App\Event; use Illuminate\Console\Command; class PDF extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'pdf:update'; /** * The console command description. * * @var string */ protected $description = 'All Country PDFs updated'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return int */ public function handle() { $event = new Event(); $event->user_id = 1; $event->save(); echo 'done'; } }

Simplemente inserta un registro en la tabla de eventos y funciona bien. Luego edité Kernel.php en el directorio App\Console.

 <?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ Commands\PDF::class, ]; /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { $schedule->command('pdf:update')->everyMinute(); } /** * Register the commands for the application. * * @return void */ protected function commands() { $this->load(__DIR__ . '/Commands'); require base_path('routes/console.php'); } }

Finalmente, ejecuto el php artisan schedule:run . Esperaba que el comando se ejecutara cada minuto, pero solo se ejecuta una vez. ¿Es esto un problema en localhost o hice algo mal?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

El php artisan schedule:run solo se ejecuta una vez según su definición:

El comando schedule:run Artisan evaluará todas sus tareas programadas y determinará si deben ejecutarse en función de la hora actual del servidor.

Si desea hacerlo cada minuto, debe usar un sistema de control de procesos programados como supervisor o crontab , etc. ( más información aquí )

En caso de que esté usando laravel 8.x y se esté ejecutando en un servidor de desarrollo/local, puede usar el siguiente comando y funcionará para usted:

 php artisan schedule:work
over 4 years ago · Santiago Trujillo Report

0

Para Laravel 7 también puede usar el siguiente comando para ejecutar en su local

 while true; do php artisan schedule:run; sleep 60; done
over 4 years ago · Santiago Trujillo Report

0

En Windows localhost

  1. En primer lugar, configure el trabajo de programación deseado en el método de ejecución dentro de App\Console\Kernel Más información en la página del sitio web de Laravel aquí

  2. En segundo lugar, en la línea de comando, ejecute el siguiente comando

php artisan schedule:work

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!