我将laravel迁移到另一台服务器时遇到问题, 我目前有laravel + redis,其中在redis的网站缓存中有一些功能,问题如下, 该站点可以在另一台服务器上运行,但是命令schedule:run在cronjob中不起作用,我尝试手动运行它,但是当在第一台服务器上正确运行时,它却提示我“没有计划好的命令可以运行”,第二台服务器是ubuntu 16.04,更换服务器时有什么特别的事情吗?附上我附上kernel.php
旧服务器具有运行MariaDB 10.1,PHP 7.2和NGINX的Centos 7
新版本具有运行MariaDB 10.1,PHP 7.2和NGINX的Ubuntu 16.04
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 = [
'\App\Console\Commands\CacheSideBar',
'\App\Console\Commands\DailyReset',
'\App\Console\Commands\WeeklyReset',
'\App\Console\Commands\MonthlyReset',
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
//$schedule->command('cache:sidebar');
$schedule->command('reset:daily')
->daily()
->withoutOverlapping();
$schedule->command('reset:weekly')
->weeklyOn(1, '00:00')
->withoutOverlapping();
$schedule->command('reset:monthly')
->monthlyOn(1, '00:00')
->withoutOverlapping();
$schedule->command('cache:sidebar')
->everyTenMinutes()
->withoutOverlapping();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
答案 0 :(得分:0)
假设您已经在服务器上安装了crontab。您需要使用服务器上的crontab注册您的cronjob。
如果未安装N.B,请参见https://tecadmin.net/install-crontab-in-linux/或https://www.rosehosting.com/blog/linux-crontab/
步骤:
1)SSH进入服务器
2)在cli中输入crontab -e
3)通过输入* * * * * cd /var/www/yoursite && php artisan schedule:run
添加cronjobs。然后保存。
4)现在php artisan schedule:run
将每分钟运行一次,检查是否有任何应运行的命令。
您可以手动运行N.B,尝试将“每日”更改为“每分钟”,如下所示:
$schedule->command('reset:daily')
->everyMinute()
->withoutOverlapping();
它将被触发。 希望对您有所帮助:)