Работа Cron не работает, когда указано время

У меня есть проект Laravel v8, и я создал задание cron для резервного копирования БД.

Он работает каждую минуту, но не работает, когда я указываю время ежедневно.

Часовой пояс проекта — «Азия/Калькутта», а часовой пояс моего общего сервера GoDaddy — UTC.

ядро.php

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        // $schedule->command('backup:clean')->everyMinute();
        $schedule->command('backup:run')->cron('51 3 * * *');
    }

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

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

мой cronjob на Cpanel.

enter image description here

задание cron, artisan schedule:run, должно выполняться каждую минуту

lagbox 23.04.2022 05:58

Когда я запланировал свою задачу на каждую минуту, она работает нормально, но когда я устанавливаю ее каждый день в определенное время и минуту, она не работает.

Sanmit Pawar 23.04.2022 06:03

задание cron должно запускаться каждую минуту, а не запланированное задание

lagbox 23.04.2022 06:05

Задание cron должно запускаться ежедневно в 9:51 (IST), предложите мне обновление на то же самое время.

Sanmit Pawar 23.04.2022 06:13

@SanmitPawar вам нужно запланировать запуск artisan schedule:run каждую минуту в cPanel. Вы можете запланировать выполнение задания на 9:51 (IST) в ядре.php (есть даже способ указать часовой пояс явно, так что вы уверены), но (повторюсь) задание cron в cPanel должно запускаться каждую минуту

apokryfos 23.04.2022 11:22

@apokryfos, но запуск задания cron каждую минуту из Cpanel приведет к нагрузке на сервер?

Sanmit Pawar 23.04.2022 17:27

Нагрузка, как правило, минимальна, так как Laravel загружает ядро ​​и читает все запланированные задачи, и если есть какая-то задача, которая должна быть запущена в эту конкретную минуту, она запускает ее, поэтому большую часть времени она просто читает несколько строк кода. Однако обратите внимание, что поставщики услуг также будут работать, поэтому, как правило, рекомендуется сделать их как можно более легкими или использовать отложенные провайдеры, где это возможно.

apokryfos 23.04.2022 19:38
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Что нового в PHP 8.1?
Что нового в PHP 8.1?
Если вы все еще используете PHP 7, то эта статья для вас. В PHP 8, а именно в PHP 8.1, встроены некоторые очень востребованные функции, которые вам...
Разработка LMS на заказ для повышения эффективности работы и обучения
Разработка LMS на заказ для повышения эффективности работы и обучения
За последние годы в образовании произошла большая революция, и сегодня почти все учебные заведения делают упор на эксклюзивное управление учебным...
0
7
44
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Замените свой ядро.php

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('backup:clean')->everyMinute();
    }

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

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

И после этого установите cronjob на Cpanel со временем, когда вы хотите выполнить

Проверяем, что указанное время в cpanel cron точно будет работать

это не работает, я упомянул каждую минуту () в ядре и в cpanel, я упомянул время cron, например «51 3 * * *»

Sanmit Pawar 23.04.2022 18:00
Ответ принят как подходящий

Вы можете запустить cron следующим образом:

protected function schedule(Schedule $schedule)
{
     $schedule->command('backup:run')->dailyAt('03:51');
}

Другие вопросы по теме