繁体   English   中英

如何调试Cron作业-Codeigniter 3

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM