在我的网站上,我在cpanel上使用cron job。
我在控制器的构造区域中有以下代码,但它会阻止cpanel cron作业工作。
if (!$this->input->is_cli_request()) {
show_error('Direct access is not allowed');
}
问题我是否需要上述代码?如果我使用我的cpanel cron工作?我只是想让它更安全。
<?php
class Cron extends CI_Controller {
public function __construct() {
parent::__construct();
if (!$this->input->is_cli_request()) {
show_error('Direct access is not allowed');
}
$this->load->library('email');
$this->load->model('members_model');
}
public function message()
{
$admin_email = $this->config->item('email_host');
$admin_email_pass = $this->config->item('email_password');
$companyname = 'Riwaka';
$config = array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://mail.yourdomain.co.nz',
'smtp_port' => 465,
'smtp_user' => $admin_email,
'smtp_pass' => $admin_email_pass,
'mailtype' => 'html',
'charset' => 'iso-8859-1'
);
$this->email->initialize($config);
$members = $this->members_model->get_approved_members_for_cron_job();
if ($members) {
foreach ($members as $member) {
if ($member['approved'] == '1' && $member['approved_email_sent'] == '0')
{
$this->email->set_newline("\r\n");
$this->email->clear();
$this->email->from($admin_email, 'Admin');
$this->email->to($member['email']);
$this->email->subject($companyname .' Account Approved');
$this->email->message('test');
$update = array(
'approved_email_sent' => '1',
);
$this->members_model->update_approve_email_send($member['email'], $update);
$this->email->send();
}
}
}
}
}
答案 0 :(得分:2)
阻止从网页直接访问:
您需要添加此行
/* deny direct call from web browser */
if (isset($_SERVER['REMOTE_ADDR'])) die('Permission denied.');
使用CI 3.0可以
如果应用程序通过命令行运行,则使您的cron-jobs无法通过URL加载 检查
is_cli()
的返回值。
is_cli()
返回TRUE,否则返回FALSE。
作为我的评论,cpanel cron作业模式是:
/ usr / bin / php /var/www/website/public_html/cli.php控制器方法
,
请参阅文档here
相关post
答案 1 :(得分:0)
现在解决了。 CodeIgniter Cron Job through Cpanel
这似乎是我使用过的路径的一个问题。在我之前的cpanel上
php --silent http://mysubdomain.mydomain.co.nz/cron/message
如果我想使用此代码来阻止访问
,则无法正常工作if (!$this->input->is_cli_request()) {
show_error('Direct access is not allowed');
}
php-cli /home/myusername/public_html/mysubdomain/index.php Cron message
现在一切正常