我正在使用CakePHP 3.5构建的系统,该系统有多个Cron Jobs全天运行。
这些cron作业始终按以下格式执行:
/home/myuser/public_html/bin/cake shell_name command_name
当crons运行时,他们通常会在服务器发送的默认系统电子邮件中输出进度,例如:
Welcome to CakePHP v3.4.11 Console
---------------------------------------------------------------
App : src
Path: /home/myuser/public_html/src/
PHP : 5.6.31
---------------------------------------------------------------
Starting Thirty Minute Report Email Cron (JSON and PDF files)....
- Report 1 complete
- Report 2 complete
Report emails sent.
Cron Finished.
昨天,在没有更改代码的情况下,这些crons已经停止工作。
现在输出的就是CakePHP 3.5 Shell Helper:
Welcome to CakePHP v3.4.11 Console
---------------------------------------------------------------
App : src
Path: /home/myuser/public_html/src/
PHP : 5.6.31
---------------------------------------------------------------
Current Paths:
* app: src
* root: /home/myuser/public_html
* core: /home/myuser/public_html/vendor/cakephp/cakephp
Available Shells:
[Bake] bake
[Migrations] migrations
[CORE] cache, i18n, orm_cache, plugin, routes, server
[app] console, backups, tasks
To run an app or core command, type `cake shell_name [args]`
To run a plugin command, type `cake Plugin.shell_name [args]`
To get help on a specific command, type `cake shell_name --help`
奇怪的是,如果我通过SSH(在实时生产服务器上)运行这些命令,那么它们就不会执行任何问题,它们也会在localhost上执行。
我遵循CakePHP文档中描述的正确格式,这是我的shell:
namespace App\Shell;
use Cake\Console\Shell;
use Cake\Core\Configure;
class TasksShell extends Shell {
/*****
*** SENDS THE REPORT EMAIL AT A THIRTY MINUTE INTERVAL
*****/
public function thirtyMinReport() {
/** CODE **/
}
}
正在运行的cron是:
/home/myuser/public_html/bin/cake tasks thirty_min_report
今天我也试过了它的变体:
/home/myuser/public_html/bin/cake tasks thirtyMinReport
/home/myuser/public_html/bin/cake Tasks thirtyMinReport
php /home/myuser/public_html/bin/cake.php Tasks thirtyMinReport
cd /home/myuser/public_html && bin/cake Tasks thirtyMinReport
我还发现其他人在CakePHP网站here上遇到了同样的问题,但是这个问题仍未得到解决。
我可以忽略的是阻止找到cron shell_name和command_name吗?
答案 0 :(得分:1)
对于遇到麻烦的人,我自己找到了答案。
由于某些我不知道的原因,服务器php配置已更新,现在register_argc_argv
已设置为关闭。
我重新启用了这个,而cron的工作又重新开始了。
register_argc_argv = On
此修改是对/opt/alt/php56/etc/php.ini