設定した日にちが来たら、何らかの値を切り替えるようなメソッドを作成しました。
このメソッドは日にちが関係していることから、FUelPHPでバッチ処理をできるようにしています。
メソッドの作成
FuelPHPでバッチ処理を行わせるには、 fuel/app/tasks/
以下のディレクトリ内のファイルにメソッドを定義する必要があります。
そして、ファイル名は「date.php」を作成して、以下のメソッドを定義していきます。
date.php
public function changeValue()
{
$month = date("n");
$day = date("j");
if ( $day == "10" ) $day = "1";
elseif ( $day == "20" ) $day = "2";
elseif ( $day == "30" ) $day = "3";
if ( $month == "2" )
{
if ( $day == "29" ) $day = "4";
}
$sports = \Sport::query()
->where('hold', 2)
->where('hold_date', $month)
->where('hold_date2', $day)
->get();
$query = \DB::query("SELECT hold, hold_date, hold_date2 FROM sports WHERE hold = 2 AND hold_date = :month AND hold_date2 = :day");
$query->parameters(array('month' => &$month, 'day' => &$day));
$result = $query->execute()->as_array();
foreach ( $result as $key => $val )
{
if ( $val['hold_date'] == $month && $val['hold_date2'] == $day )
{
foreach ( $sports as $sport )
{
$sport->hold = "1"
$sport->hold_date = "0"
$sport->hold_date2 = "0"
$sport->save()
}
}
return true;
}
}
date()
は string
で取得されるので、注意が必要になります。
また、日にちは10日刻みで値を変更するようにしていて、2月時は29日で実行されるようにしました。
バッチ処理の定義
サーバーに接続した状態で crontab -e
を実行します。
そして、以下を追記します。
0 5 * * * /ファイルまでのディレクトリ/oil r date:changeValue 2>&1
今回は、毎朝5時に実行するように定義しました。
これにて、設定した日にちが来たら、何らかの値を切り替えるようなメソッドの作成は完了しました。