![](/img/trans.png)
[英]How can I debug a Codeigniter Cron job that only runs the default controller and action when called?
[英]How to debug cron job - codeigniter 3
我的Cron工作是从Godaddy共享服务器正确触发的:
wget `http://www.domain/APP/index.php?/cron_jobs/cron_job_TEST`
cron结果中没有返回错误:
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `index.php?%2Fcron_jobs%2Fcron_job_TEST'
我将测试设置为写入文本文件-并写入数据库表。
当我通过访问URL进行测试时http://www.domain/APP/index.php?/cron_jobs/cron_job_TEST
文本文件和表格已正确写入。
但是,当cron运行时-文本文件或数据库表没有任何结果。
控制器/功能'cron_jobs / cron_job_TEST':
// CRON_1
public function cron_job_TEST(){
file_put_contents("test_cron_job.txt", "cron_job_TEST-> ".date('l jS \of F Y h:i:s A') . "\n", FILE_APPEND);
$this->db->query("INSERT INTO `TEST_CRON` (`ID`, `DATE`) VALUES ('', NOW());");
}// END CRON_1
我也尝试了/web/cgi-bin/php5 $HOME/html/
方法,但是没有运气。 我认为wget的要点是它的行为就像您正在访问URL一样。
这里可能出什么问题了?
我该如何调试?
而不是使用wget从Web服务器获取文件,您应该通过在codeigniter的index.php文件上调用PHP,直接从命令行执行命令:
php /path/to/your/project/html/index.php cron_jobs/cron_job_TEST
如果您以这种方式执行您的codeigniter应用程序,则应该能够看到输出以及执行期间可能冒出的错误。
我还建议您通过cron方法编写一个日志文件,以便您可以输出值,并且,如果您很聪明,请确保正在执行代码的哪些分支。
编辑:您还可以更改cron作业,无论选择哪种方法,都可以将cron作业的输出路由到文件中,这样您可能会对发生故障的情况有所了解:
wget `http://www.domain/APP/index.php?/cron_jobs/cron_job_TEST` > /path/to/file.txt
编辑:我认为您也可以将stderr和stdout都路由到同一文件,如下所示
wget `http://www.domain/APP/index.php?/cron_jobs/cron_job_TEST` &> /path/to/file.txt
显然,拥有此cron作业的用户必须具有写该输出文件的权限(如果该文件已存在),或者必须具有写目录的权限(如果该文件不存在)。
一旦执行了cron作业,您就可以查看此文件,并更好地了解发生了什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.