勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

CodeIgniter4でCronを実行する方法

  PHP CodeIgniter

CodeIgniter4.4.4で特定の処理をCronで自動実行させたい。以下に対応方法のメモ。

 

リファレンス

CLI 経由でコントローラーを実行

https://codeigniter.com/user_guide/cli/cli_controllers.html

コマンドラインだけのルーティング

https://ci-trans-jp.gitlab.io/user_guide_4_jp/general/routing.html#id13

 

ソースコード

Routes.php

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$routes->cli('/cron/test', 'Cron::test');
$routes->cli('/cron/test', 'Cron::test');
$routes->cli('/cron/test', 'Cron::test');

「cli」指定することでブラウザからはアクセスできず(404になり)、コマンドラインからのみ実行する形になる。

Controllers

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
namespace App\Controllers;
class Cron extends BaseController
{
public function test()
{
log_message('info', 'Cron test');
}
}
<?php namespace App\Controllers; class Cron extends BaseController { public function test() { log_message('info', 'Cron test'); } }
<?php
namespace App\Controllers;

class Cron extends BaseController
{
    public function test()
    {
        log_message('info', 'Cron test');
    }

}

今回は実行されるとエラーログを出力するような動作とした。

 

実行方法

PHPで実行

SSH接続して以下コマンドで実行。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#[php] [public/index.phpへの絶対パス] [コントローラー名] [メソッド名] [必要なら引数]
php /var/www/html/codeigniter4/public/index.php cron test
#[php] [public/index.phpへの絶対パス] [コントローラー名] [メソッド名] [必要なら引数] php /var/www/html/codeigniter4/public/index.php cron test
#[php] [public/index.phpへの絶対パス] [コントローラー名] [メソッド名] [必要なら引数]
php /var/www/html/codeigniter4/public/index.php cron test

Cronで実行

SSH接続して以下の通りCron設定する。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#Cronの編集
crontab -e
#以下を追記
#[時間設定] [ユーザー名] [PHPパス] [public/index.phpへの絶対パス] [コントローラー名] [メソッド名] [必要なら引数]
* * * * * root /usr/bin/php /var/www/html/codeigniter4/public/index.php cron test
#Cron設定状況の確認
crontab -l
#Cronの編集 crontab -e #以下を追記 #[時間設定] [ユーザー名] [PHPパス] [public/index.phpへの絶対パス] [コントローラー名] [メソッド名] [必要なら引数] * * * * * root /usr/bin/php /var/www/html/codeigniter4/public/index.php cron test #Cron設定状況の確認 crontab -l
#Cronの編集
crontab -e

#以下を追記
#[時間設定] [ユーザー名] [PHPパス] [public/index.phpへの絶対パス] [コントローラー名] [メソッド名] [必要なら引数]
* * * * * root /usr/bin/php /var/www/html/codeigniter4/public/index.php cron test

#Cron設定状況の確認
crontab -l

 - PHP CodeIgniter

  関連記事

Codeigniter4で独自・外部ライブラリの作成と呼び出し方法

Codeigniter4で独自ライブラリを作成し、コントローラー側で呼び出したい ...

CodeIgniter3でログをファイルに出力する方法

Codeigniter3でエラーログの設定を行い特定のファイルに出力させ当該ログ ...

CodeIgniter4でコントローラ実行の前後に指定したイベントを実行する方法

CodeIgniter4で特定の条件の場合は指定したページにリダイレクトさせたい ...

CodeIgniter4でのメール送信方法(テキスト・HTMLメール)

CodeIgniter4.4.4でテキストメール及びHTMLメールを送信したい。 ...

CodeIgniter4で簡易版ログインシステムの実装方法(管理画面向け)

CodeIgniter4で管理画面向けの簡易版ログインシステムを作成したい。通常 ...

S