Laravel 5.4 - 计划:运行只运行一次

时间:2017-09-13 03:37:09

标签: laravel

我制作了一个名为db:dump的自定义工匠命令,它将我的数据库转储到sql文件中。

我尝试将其应用到调度程序中,因此每次都会根据我想要应用的时间范围进行备份。在这种情况下,我使用everyMinute()

进行了测试

这就是我的内核看起来的样子。

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

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

    /**
     * Register the Closure based commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        require base_path('routes/console.php');
    }
}

在我的命令提示符中执行php artisan schedule:run时,它只能运行一次。尝试等待5分钟,看看它是否会备份5次,但事实并非如此。我反复尝试运行schedule:run,而且每次都只运行sql。基本上,每次运行schedule:run时,它都会转储Transition Rejection($id: 0 type: 6, message: The transition errored, detail: Error: [$injector:unpr] http://errors.angularjs.org/1.6.5/$injector/unpr? p0=MenuDataServiceProvider%20%3C-%20MenuDataService) _defaultErrorHandler @ angular-ui-router.min.js:13 (anonymous) @ angular-ui-router.min.js:13 (anonymous) @ angular.min.js:136 $digest @ angular.min.js:147 $apply @ angular.min.js:150 (anonymous) @ angular.min.js:163 e @ angular.min.js:48 (anonymous) @ angular.min.js:51 setTimeout (async) h.defer @ angular.min.js:51 f @ angular.min.js:163 (anonymous) @ angular-ui-router.min.js:11 kg @ angular.min.js:39 d @ angular.min.js:39 angular-ui-router.min.js:13 Error: [$injector:unpr] http://errors.angularjs.org/1.6.5/$injector/unpr?p0=MenuDataServiceProvider%20%3C-%20MenuDataService at angular.min.js:7 at angular.min.js:46 at Object.d [as get] (angular.min.js:43) at angular.min.js:46 at Object.d [as get] (angular.min.js:43) at t.getNative (angular-ui-router.min.js:12) at o (angular-ui-router.min.js:12) at Array.map (<anonymous>) at t.getDependencies (angular-ui-router.min.js:12) at i (angular-ui-router.min.js:12) 文件。

我现在完全迷失了,感谢那些可以帮助我的人。 :)

2 个答案:

答案 0 :(得分:0)

如果您在本地运行,那么您应该使用以下内容。

 php artisan schedule:work

当你在实时服务器上时,你必须像下面这样设置cron配置

https://laravel.com/docs/8.x/scheduling#running-the-scheduler-locally

答案 1 :(得分:0)

您需要在 Plesk 或 directadmin 或 Cpanel 等控制面板计划服务器上运行 cronjob。

鸡蛋:visit