微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Elastic Beanstalk – Cron作业正在运行但未执行

这是我第一次在Elastic Beanstalk(EB)上运行cron作业.在部署我的代码之后,似乎cron作业已创建并正在运行,但PHP脚本未正确执行.这是我的设置.

在我的.ebextensions文件夹中,我有一个名为01run.config文件.

container_commands:
  01_remove_old_cron_jobs:
    command: "crontab -r || exit 0"
  02_cronjobs:
    command: "cat .ebextensions/cron_jobs.txt > /etc/cron.d/cron_job && chmod 644 /etc/cron.d/cron_job"
    leader_only: true

在我的.ebextensions文件夹中,我还有一个cron_jobs.txt文件.请注意,我在另一个stackoverflow帖子的指示下在此文件的末尾有一个换行符.在我下面的例子中,我以ec2-user运行命令,但我也试过root.

* * * * * ec2-user /usr/bin/PHP -q /var/app/current/tests/cron.PHP

部署我的代码后,我可以看到已经创建了文件/etc/cron.d/cron_job.当我运行sudo tail / var / log / cron时,我还可以看到每分钟运行的cron作业.

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$sudo tail /var/log/cron
Apr 13 12:54:53 ip-xxx-xxx-xxx-xxx crontab[26093]: (root) DELETE (root)
Apr 13 12:55:01 ip-xxx-xxx-xxx-xxx crond[1230]: (*system*) RELOAD (/etc/cron.d/cron_job)
Apr 13 12:55:01 ip-xxx-xxx-xxx-xxx CROND[26128]: (ec2-user) CMD (/usr/bin/PHP -q /var/app/current/tests/cron.PHP)
Apr 13 12:56:01 ip-xxx-xxx-xxx-xxx CROND[26139]: (ec2-user) CMD (/usr/bin/PHP -q /var/app/current/tests/cron.PHP)

在/var/app/current/tests/cron.PHP我有一些代码可以向MysqL数据库添加一行(托管在RDS上).但是没有任何东西被添加数据库中.

然后我尝试直接通过终端窗口运行cron命令:

$/usr/bin/PHP -q /var/app/current/tests/cron.PHP

它运行时没有错误,并将记录添加数据库中.我在终端登录为ec2-user.

我错过了什么吗?或者我的cron作业代码设置不正确?

解决方法:

我在尝试访问AWS RDS数据库PHP脚本时遇到了类似的问题.您的PHP脚本是否使用$_SERVER [‘RDS_xxxx’]获取数据库详细信息?如果是这样,当cron运行PHP脚本时,环境中不存在那些RDS_xxxx变量.

为了解决这个问题,我将变量添加到了cron文件的开头:

RDS_HOSTNAME=<my_database_hostname>
RDS_PORT=<my_database_port>
RDS_USERNAME=<my_database_username>
RDS_PASSWORD=<my_database_password>
RDS_DB_NAME=<my_database_name>

* * * * * PHP /path/to/my/script.PHP

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐