バッチ実行っていうんかな?cronでPHPを実行する方法

今回はcronを使ってPHPをバッチ実行する方法です。

システム開発をしているとデータのバックアップや、不要になったデータの削除を定期的に行うことになります。

万が一不正なアクセスによってシステムが破壊されても、前日の夜間にデータのバックアップがとってあればそこから復元することができます。

 

しかし、一般的にPHPの実行というのはWEBブラウザで指定されたページを開いたときに動きます。

このタイミングでバックアップを作成したりしても、アクセスの多いときはサーバーに負荷をかけてしまいますし、アクセスが少なければいいタイミングで動かないなんてことになります。

これを解決する方法がcronです。

cronはOSの機能で、指定した時間にプログラムを実行させることが可能です。

例えば、毎日深夜2時にデータのバックアップを作成し、1ヶ月以上経過したバックアップデータは削除するようなことができます。

cronでPHPを実行する方法

PHPコマンド PHP実行ファイル.php

cronでPHPを実行するのは簡単で、cronの設定画面の実行するコマンドに上のように書けばOKです。

PHPコマンドは、各レンタルサーバーの「サーバー情報」を確認すると記載されています。

PHPコマンドから半角スペースを空けてPHP実行ファイル.phpを指定します。

PHP実行ファイル.phpは、実際に実行するPHPファイルで、フルパスで指定してください。フルパスにする決まりはないですが、大幅にバグを軽減できます。

cronの設定方法(補足)

cron を知らない人の為に補足しておきます。

cronは、指定した時間に指定したファイルを実行するプログラムです。

曜日、月、日、時、分が指定できます。

 

例えば毎日午前2時00分に実行だと次のようになります。

0
時間 2
*
*
曜日 *

*は、「全ての」という意味です。

 

12月だけ10分おきに実行だと次のようになります。

*/10
時間 *
*
12
曜日 *

もしかしたら各サーバーの設定画面によって異なったりもしますのでそちらをご確認ください。

Xサーバーの設定方法

Xサーバーで10分おきに sample.php を実行しようと思います。

 

まず実行できるPHPコマンドを確認します。

Xサーバーの「サーバーパネル」にログインし、「サーバー情報」→「コマンドパス一覧」タブと進みます。

今回は、PHP7.0を選択しました。

どのPHPを選ぶかは仕様書かお客さんに確認してください。1人で作ってる場合は動けばどれでもいいと思います。

 

次にcronを設定します。

メニューから「Cron設定」→「Cron設定追加」を選択。

今回は10分おきに実行するので「*/10」と設定しました。

PHP7.0を選択したので、コマンドには「/usr/bin/php7.0 /実行するPHPのフルパス/sample.php」のように書いています。

 

これで10分おきにsample.phpが実行されます。

さくらレンタルサーバーの設定方法

さくらレンタルサーバーでも同様に10分おきに sample.php を実行しようと思います。

 

まずPHPコマンドを確認します。

さくらサーバーのコントロールパネルログインし、サイドメニューの「サーバー情報の表示」→「サーバに関する情報」を選択。

「各種コマンドパス」でPHPのコマンドを確認します。

 

次に、cronの設定を行います。

サイドメニューより「cronの設定」→「>> 新規項目の追加」をクリック。

設定内容は上記の画像のようになります。

こちらも同様に10分おきに動かすため、分のところに「*/10」と設定しています。

そして、コマンドはPHPを動かすため「/usr/local/bin/php」と書き、半角スペースを空けて実際に動かすPHPファイルを指定しています。

さくらのほうは曜日はチェックで指定するようですね。

 

これで完成です、

まとめ

PHPをcronで実行する方法をご紹介しました。

cronは時間を指定してPHPをバックグラウンドで実行するためのプログラムです。

データベースのバックアップだけでなく、定期的にメールを送信したり、非公開の記事を時間がきたら公開したりできます。

あまり頻度を高くするとサーバーへ負荷がかかってしまうのでほどほどにしましょう。

2 件のコメント

    • 近々やりたいんですけどねー。
      家庭の事情で休止中なのですが、まだ色々解決していないことがありまして。。。

  • コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    CAPTCHA