PHP 周期的にPHPを走らせる

サーバで周期的にスクリプトを起動

と言えば、簡単な方法としてサーバのCron機能を使えば実現できます。

Cronとは

読み方は、「クロン」「クーロン」「クローン」「シーロン」と様々です。
UNIX、Linuxの常駐プログラムの一種で、指定した時刻に指定したコマンド、スクリプトを実行してくれるスケジュールプログラムです。
このCron機能は、レンタルサーバによりユーザーに解放していたり、制限があったりします。
今回は、Cron時間の設定の自由度が利き、サーバパネルから簡単に設定できるXSERVERを例に実現方法を説明していきます。

XSERVERのCronの設定

まず、実行する時刻、実行するphpプログラムを決めて置きます。
実行する時刻:毎時5分(0:05,1:05,2:05・・・)
実行するドメイン名:exsample.com
実行するファイル名:interval.php

Cronコマンドの作成

コマンドは、以下の形式になります。

コマンドパス[半角スペース]/home/サーバーID/独自ドメイン名/public_html/実行ファイル名

ここでドメイン名はexsample.com、実行するファイル名:interval.phpなので
コマンドパス[半角スペース]/home/サーバーID/exsample.com/public_html/interval.php
です。

コマンドパスの調べ方

コマンドパスは、動作しているPHPのバージョンで異なります。

PHPのバージョンを調べる

Xserver サーバーパネルのトップページの左下の「設定対象ドメイン?」を対象のドメインに設定する

サーバーパネルの「PHP Ver.切替」をクリックします。

PHPバージョン切り替えのページが開きます。

PHPバージョン切り替えページの現在のバージョン欄から、PHPのバージョンが分かります。

PHPのバージョンからコマンドパスを調べる

サーバーパネルの「サーバー情報」をクリックし、サーバー情報ページの「コマンドパス一覧」タブをクリックします。
該当するPHPバージョン(CLI)のパスがコマンドパスです。(PHPのバージョンの端数は切り捨てで調べます)
最近の新サーバではCLIではないこともあるので(CLI)表示はされてない場合もあります。

サーバーIDを調べる

サーバーパネルのトップページ左上にあります。

ここで整理して
コマンドパス:usr/bin/php7.0
サーバーID:abcdefg

先程のコマンドパス[半角スペース]/home/サーバーID/exsample.com/public_html/interval.php
にあてはめると

usr/bin/php7.0 /home/abcdefg/exsample.com/public_html/interval.php

これがCronのコマンドになります。

コマンドパスの区切りに半角スペースを忘れないように注意してください。

Cronの設定

サーバーパネルの「Corn設定」をクリックします。

開いたCron設定ページの「CORNの追加」タブをクリックします。

1時間ごとなので、1の分の設定だけ適当に 0~59の数字 例では毎時5分なので 5
残りの2~5は、*(半角アスタリスク)を入力
6は、先ほど調べたコマンドを入力
7は、1時間毎起動とかの後でわかりやすい注釈を入力
そして「CRONの追加」ボタンをクリックします。

確認画面が表示されるので、問題なければ「CRONの追加」ボタンをクリックして完了