Laravel schedule:run 命令无效
Laravel schedule:run command is not working
我在实时服务器 (Linux) 的 laravel 中设置后台计划。我正在使用比特纳米。但是当我像这样使用命令时 schedule:run
不起作用:
* * * * * /opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1
我也这样试过:
* * * * * php artisan schedule:run 1>> /dev/null 2>&1 ###
没有发生错误,但计划不工作。
当我这样尝试时:
php artisan schedule:run 1>> /dev/null 2>&1
或喜欢
/opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1
没有星号 (*) 那么它可以工作,但只有一个命令被处理,我在我的内核时间表中设置为每一分钟,如下所示:
$schedule->command('payment:check')->everyMinute();
但它只运行一次当我运行 schedule:run
命令之后什么都不做。我每小时、每天等调用的其他命令根本不起作用。
谁能告诉我可能是什么问题?
使用 Bitnami LAMP 堆栈可用 https://bitnami.com/stack/lamp
这些是我在 Laravel 上成功设置时间表所遵循的步骤:
在 Apache 配置文件中取消注释下面的行 /opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf
:
#Include "/opt/bitnami/lampstack-5.6.26-3/frameworks/laravel/conf/httpd-prefix.conf"
编辑文件的方法时间表 /opt/bitnami/frameworks/laravel/app/Console/Kernel.php
:
protected function schedule(Schedule $schedule)
{
$schedule->exec('echo "Hello World"')
->everyMinute()
->appendOutputTo('/tmp/laravel.log');
}
重新启动 Apache:sudo /opt/bitnami/ctlscript.sh restart apache
- 运行:
/opt/bitnami/php/bin/php /opt/bitnami/frameworks/laravel/artisan schedule:run >> /dev/null 2>&1
结果:
- Laravel 示例项目位于:http://127.0.0.1/laravel/
- 每分钟在 /tmp/laravel.log
上添加一条 "Hello world!" 行
您应该访问:
Bitnami Laravel 文档:
https://docs.bitnami.com/general/components/php-frameworks/#laravel
Laravel官方文档(调度):https://laravel.com/docs/5.3/scheduling
Laravel's php artisan schedule:run
命令 运行s 调度器只有一次。为了使其工作,您需要将此命令添加到位于 /etc 目录的 cron 配置文件 (crontab)。按照以下步骤操作:
第一步:
将 cron 条目添加到 crontab 文件 [使用 nano 打开文件 /etc/crontab
]
* * * * * root php path/to/artisan schedule:run
注意:
- ****的意思是每分钟运行命令
-root 是用户名,你应该指定适当的用户名
-请在您的 laravel 项目中指定 artisan 命令的完整路径。
第 2 步:
重启服务
> sudo service cron reload
> sudo service cron stop
> sudo service cron start
要检查 cron 的状态,运行 sudo service cron status
第 3 步:
请确保您已在 App/Console/Kernel 中的调度函数中编写代码。这是我在那里写的:
protected function schedule(Schedule $schedule)
{
$schedule->call(function(){
Mail::send([],[],
function ($m){
$m->to(['test@example.com'],'Notify')
->subject('Renewal Notification')
->setBody('You have upcoming renewal.');
});
})->everyTenMinutes();
}
Laravel 提供了很多功能来安排您的呼叫或命令。我使用了 everyTenMinutes()
函数。然而,Laravel 在内部按照这些计划运行,我们应该只确保我们在 cron 配置文件中使用单个条目(在步骤 1 中提到)频繁调用 schedule:run
命令。
我在实时服务器 (Linux) 的 laravel 中设置后台计划。我正在使用比特纳米。但是当我像这样使用命令时 schedule:run
不起作用:
* * * * * /opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1
我也这样试过:
* * * * * php artisan schedule:run 1>> /dev/null 2>&1 ###
没有发生错误,但计划不工作。
当我这样尝试时:
php artisan schedule:run 1>> /dev/null 2>&1
或喜欢
/opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1
没有星号 (*) 那么它可以工作,但只有一个命令被处理,我在我的内核时间表中设置为每一分钟,如下所示:
$schedule->command('payment:check')->everyMinute();
但它只运行一次当我运行 schedule:run
命令之后什么都不做。我每小时、每天等调用的其他命令根本不起作用。
谁能告诉我可能是什么问题?
使用 Bitnami LAMP 堆栈可用 https://bitnami.com/stack/lamp
这些是我在 Laravel 上成功设置时间表所遵循的步骤:
在 Apache 配置文件中取消注释下面的行
/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf
:#Include "/opt/bitnami/lampstack-5.6.26-3/frameworks/laravel/conf/httpd-prefix.conf"
编辑文件的方法时间表
/opt/bitnami/frameworks/laravel/app/Console/Kernel.php
:protected function schedule(Schedule $schedule) { $schedule->exec('echo "Hello World"') ->everyMinute() ->appendOutputTo('/tmp/laravel.log'); }
重新启动 Apache:
sudo /opt/bitnami/ctlscript.sh restart apache
- 运行:
/opt/bitnami/php/bin/php /opt/bitnami/frameworks/laravel/artisan schedule:run >> /dev/null 2>&1
结果:
- Laravel 示例项目位于:http://127.0.0.1/laravel/
- 每分钟在 /tmp/laravel.log 上添加一条 "Hello world!" 行
您应该访问:
Bitnami Laravel 文档: https://docs.bitnami.com/general/components/php-frameworks/#laravel
Laravel官方文档(调度):https://laravel.com/docs/5.3/scheduling
Laravel's php artisan schedule:run
命令 运行s 调度器只有一次。为了使其工作,您需要将此命令添加到位于 /etc 目录的 cron 配置文件 (crontab)。按照以下步骤操作:
第一步:
将 cron 条目添加到 crontab 文件 [使用 nano 打开文件 /etc/crontab
]
* * * * * root php path/to/artisan schedule:run
注意: - ****的意思是每分钟运行命令 -root 是用户名,你应该指定适当的用户名 -请在您的 laravel 项目中指定 artisan 命令的完整路径。
第 2 步: 重启服务
> sudo service cron reload
> sudo service cron stop
> sudo service cron start
要检查 cron 的状态,运行 sudo service cron status
第 3 步: 请确保您已在 App/Console/Kernel 中的调度函数中编写代码。这是我在那里写的:
protected function schedule(Schedule $schedule)
{
$schedule->call(function(){
Mail::send([],[],
function ($m){
$m->to(['test@example.com'],'Notify')
->subject('Renewal Notification')
->setBody('You have upcoming renewal.');
});
})->everyTenMinutes();
}
Laravel 提供了很多功能来安排您的呼叫或命令。我使用了 everyTenMinutes()
函数。然而,Laravel 在内部按照这些计划运行,我们应该只确保我们在 cron 配置文件中使用单个条目(在步骤 1 中提到)频繁调用 schedule:run
命令。