简体   繁体   中英

Laravel schedule sitemap:generate is not working

I added spatie/laravel-sitemap to my Laravel app and it is working when i run the command php artisan sitemap:generate, but I can't figure it out how to make it work automatically with Kernel.php schedule.

I added $schedule->command('sitemap:generate')->hourly(); but it is not working

Console/Commands/GenerateSitemap.php

    <?php

    namespace App\Console\Commands;

    use Illuminate\Console\Command;
    use Spatie\Sitemap\SitemapGenerator;

    class GenerateSitemap extends Command
    {
        /**
         * The console command name.
         *
         * @var string
         */
        protected $signature = 'sitemap:generate';

        /**
         * The console command description.
         *
         * @var string
         */
        protected $description = 'Generate the sitemap.';

        /**
         * Execute the console command.
         *
         * @return mixed
         */
        public function handle()
        {
            // modify this to your own needs
            SitemapGenerator::create('mywebsite')
                ->writeToFile(public_path('sitemap.xml'));
        }
    }

Console\Kernel.php


    <?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\GenerateSitemap::class,
        ];

        /**
         * Define the application's command schedule.
         *
         * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
         * @return void
         */
        protected function schedule(Schedule $schedule)
        {
            $schedule->command('sitemap:generate')->hourly();
        }

        /**
         * Register the commands for the application.
         *
         * @return void
         */
        protected function commands()
        {
            $this->load(__DIR__.'/Commands');

            require base_path('routes/console.php');
        }
    }

What should I add to make it generate automatically the sitemap every hour?

You should declare in projected commands like this \App\Console\Commands\GenerateSitemap::class

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM