🔧 はじめに
CodeIgniter4では、Laravelのような「Scheduler」は標準搭載されていませんが、独自のCLIコマンド(spark)をcron(クーロン)で定期実行することで、スケジュールタスクを実現できます。
🧩 手順1:CLIコマンドの作成
まず、CI4のコマンドを作成します。
php spark make:command SendReport
これで app/Commands/SendReport.php が作成されます。
内容を編集します:
<?php
namespace App\Commands;
use CodeIgniter\CLI\BaseCommand;
use CodeIgniter\CLI\CLI;
class SendReport extends BaseCommand
{
protected $group = 'Custom';
protected $name = 'send:report';
protected $description = '日次レポートを送信します';
public function run(array $params)
{
CLI::write('レポート送信処理を実行中...', 'yellow');
// 実際の処理
// 例: メール送信やDB更新など
// service('email')->send(...);
CLI::write('完了しました!', 'green');
}
}
🕒 手順2:ローカルで動作確認
php spark send:report
このコマンドが正しく動けばOKです。
⏰ 手順3:cron設定
次に、サーバーのcronを設定します。
Linuxサーバーで以下を実行:
crontab -e
以下を追加します(1時間ごとに実行する例):
0 * * * * cd /path/to/your/project && php spark send:report >> /path/to/your/project/writable/logs/cron.log 2>&1
cd でプロジェクトディレクトリに移動し、sparkコマンドを指定するのがポイントです。
出力ログを writable/logs/cron.log に保存しておくと、動作確認にも便利です。
💡 よくあるエラー対策
php: command not found→ PHPのパスを指定(例:/usr/bin/php)- パーミッションエラー →
writableディレクトリの権限を確認 sparkが動かない → 絶対パスで指定する
✅ まとめ
CodeIgniter4では、spark コマンド+cronを組み合わせることで、定期実行ジョブを簡単に構築できます。
レポート送信・定期バックアップ・キャッシュクリアなど、多くの用途に応用できます。
