我的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'
我将测试设置为写入文本文件 - 并写入数据库表。
当我测试时 - 访问网址 - http://www.domain/APP/index.php?/cron_jobs/cron_job_TEST
正确写入文本文件和表。
但是当cron运行时 - 文本文件或数据库表没有结果。
CONTROLLER / FUNTION'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一样。
这里可能出现什么问题?
如何调试?
答案 0 :(得分:3)
您应该通过在codeigniter的index.php文件中调用PHP直接从命令行执行命令,而不是使用wget从Web服务器获取文件:
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作业运行,你就可以查看这个文件并更好地了解发生的事情。