こんにちは、方法を使用して cron ジョブを作成する際にいくつかの問題に直面していCI CLI
ます。私のアプリケーションには、1 つのモデル関数を使用してmanager.php
すべてを取得する check_status というメソッドがあるという名前のコントローラーがあります。order_ids
order_id 行には、成功または失敗のいずれかのステータスがデータベースに記録されていました。
order_id を渡すと、注文が正常に配信されたかどうかを通知する API があります。しかし、ここで、一番上のコントローラーの行の下にある問題が発生します。
<?php if(! defined('BASEPATH') ) exit("NO Direct Script Access Allowed"); ?>
そのため、CI で CLI からメソッドを実行しようとするとcheck_status
、エラーが表示されますNO Direct Script Access Allowed
。
これは私が上記のメソッドを呼び出した方法ですphp application/controllers/manager.php check_status
そこで、上記のエラー行を保持しなかったという点で、このように cron_job.php という別のクラス ファイルを作成することにしました "No Direct Script Access Allowed"
。実行しようとするとアクセスできるようになると思いましたが、エラーは発生せず、出力もされません。
これは私が作成したクラスであり、その中でメソッドです。
<?php
class Cron_job extends CI_Controller {
public function message($to = 'World')
{
echo "Hello {$to}!".PHP_EOL;
}
}
?>
このコントローラーフォームCLIを次のように実行しますphp application/controller/cron_job.php message
Note: I am in ROOT directory.
出力がまったくありません。だから私はこのような別の方法で試しましたphp index.php application/controller/cron_job.php message
今、それは私にそれを示すエラーを与えますError 404 page not found.
私が別の方法で試したことは、ビューフォルダーにファイルを作成したことで、以下のように古いコントローラー/メソッドのURLを呼び出しています。
$result = file_get_contents("http://application_path/controller/method");
echo $result;
今、manager.php コントローラーのメソッド check_status で定義した出力を取得しています。
しかし、上記の行の後に別の問題が発生し、すべての order_ids を持つ配列出力が得られます。
この各 ID を API に送信してステータスを確認します。失敗した場合は、配信されているかどうかを確認します。完了したら、その order_id に対してデータベースのステータスを更新する必要があります。しかし、今私はビューファイルにいます。ビューファイルからモデルファイルを呼び出すことは可能ですか、それともこれを行う方法はありますか?
何か助けはありますか?
注:コントローラーまたはメソッドに構文エラーはありません。これらは完全に検証されており、URL を使用してアクセスしているときに正常に動作します。