我几乎成功地在我的服务器上设置了一个Cron作业,但我无法调用正确的控制器。
当我删除CLI时,只有语句我可以从浏览器成功运行脚本。
// Make sure the request is being made by a CRON Job
if ( ! $this->input->is_cli_request()) exit('Only CLI access allowed');
我正在通过Cron守护进程通过电子邮件发送输出。我试过这个命令,以下是我的结果。
工作:
/usr/bin/php /home/dlp/public_html/abc.org/index.php birthday
结果:
我在默认控制器index.php
的第一封电子邮件HTML输出和birthdady
控制器的第二封电子邮件输出中收到了2封电子邮件。
我的控制器的代码是。
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Birthday extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper('url');
$this->load->database();
$this->load->library('email');
}
/**** function for sending news letter on birthday ****/
function index()
{
error_log("birthday function call",1,"abc@gmail.com");
exit;
}
}
?>
我不确定我做错了什么。
提前感谢您的帮助。
答案 0 :(得分:0)
您只在cronjob中编写控制器名称,但是当方法是索引时,您也应该编写方法名称。所以在你的情况下,你在你的cronjob中写birthday/index
。
OR
cron.php
中创建application/config
配置文件,数据为:$配置[ 'CRON_TIME_LIMIT'] = 0;
$ config ['argv'] = array(1 =&gt;'birthday');
$配置[ 'CRON_BETA_MODE'] = FALSE;
//!/ USR / bin中/ PHP的
<?php
define('CRON', TRUE);
// Load CRON config
require('/home/dlp/public_html/abc.org/application/config/cron.php');
// Set CRON mode ( live or beta )
define('CRON_BETA_MODE', $config['CRON_BETA_MODE']);
// Set index.php location
if (isset($config['CRON_CI_INDEX']) && $config['CRON_CI_INDEX'])
define('CRON_CI_INDEX', $config['CRON_CI_INDEX']);
else
define('CRON_CI_INDEX', '/home/dlp/public_html/abc.org/index.php');
if (count($argv) < 2)
if (count($config['argv'])) {
$argv = array_merge($argv, $config['argv']);
$_SERVER['argv'] = $argv;
} else
die('Use: php cron.php controller/method');
// Simulate an HTTP request
$_SERVER['PATH_INFO'] = $argv[1];
$_SERVER['REQUEST_URI'] = $argv[1];
//$_SERVER['SERVER_NAME'] = $config['SERVER_NAME'];
// Set run time limit
set_time_limit($config['CRON_TIME_LIMIT']);
// Run CI and capture the output
ob_start();
chdir(dirname(CRON_CI_INDEX));
// echo "== ".CRON_CI_INDEX; die;
require( CRON_CI_INDEX ); // main CI index.php file
$output = ob_get_contents();
if (CRON_FLUSH_BUFFERS === TRUE)
while (@ob_end_flush()); // display buffer contents
else
ob_end_clean();
echo "\n";
?>
/home/dlp/public_html/abc.org/cron.php