0

サーバーで Cron ジョブをほぼ正常にセットアップしましたが、正しいコントローラーを呼び出すことができません。

CLI のみ if ステートメントを削除すると、ブラウザからスクリプトを正常に実行できます。

// Make sure the request is being made by a CRON Job
if ( ! $this->input->is_cli_request()) exit('Only CLI access allowed');

Cron Daemon から出力を電子メールで送信しています。このコマンドを試してみましたが、結果は次のとおりです。

仕事 :

/usr/bin/php /home/dlp/public_html/abc.org/index.php birthday

結果 :

デフォルトコントローラーの最初の電子メールHTML出力とコントローラーindex.phpの2番目の電子メール出力で2つの電子メールを取得しますbirthdady

私のコントローラーのコードは.

    <?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;

}



}
?>

何が間違っているのかわかりません。

助けてくれてありがとう。

4

1 に答える 1

0

cronjob ではコントローラ名のみを書いていますが、メソッドが index の場合はメソッド名も書くべきです。したがって、あなたの場合birthday/index、cronjobに書き込みます。また

  1. 次のデータを使用してcron.php構成ファイルを作成します。application/config

$config['CRON_TIME_LIMIT']=0;

$config['argv'] =array(1 => '誕生日');

$config['CRON_BETA_MODE']=false;

  1. データを含むアプリケーションフォルダーに並行するルートに cron.php を作成します。

//!/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";
?>
  1. ファイルを php として cron を実行します。

/home/dlp/public_html/abc.org/cron.php

于 2013-09-23T10:54:35.727 に答える