Xserverのcronを使ってPHPのスケジュールバッチ処理をする方法をご紹介します。
先日PHPを使ったバッチ処理を実装する必要があったので、備忘録としてXserverのCronを使ってPHPのバッチ処理をする方法をご紹介していきます。
XserverのCronを使ってPHPのバッチ処理をする方法をご紹介します。
スケジューラーバッチを作成したい場合、Xserverを使っている方は標準でCron機能があるので、この機能を使っていきます。
UNIX系OSで利用できる常駐プログラム機能(デーモンと呼ばれることもある)で、設定したスケジュールに沿って、指定したプログラムを動かしてくれる機能です。
スケジュールバッチ処理を登録する
Xserverにログイン後、ServerPanelに移動し、Cron設定を開きます。動かしたい時間を設定した後に、コマンド欄に動かしたいPHPのプログラムを設定します。
コマンドの設定方法は簡単で、初めにPHPのソースを指定します。Cron設定画面の下部にXserverで使用する場合のPHPのコマンドパスがリスト化されているページがあるので、使いたいPHPのバージョンを指定します。
その後に/home/サーバID(サーバIDは〇〇〇.xsrv.jpの〇〇〇の部分)/ドメイン名/public_html/動かしたいプログラムを設定します。
// 初めにPHPのソースを指定し、その後にプログラムのディレクトリを指定する /usr/bin/php7.4 /home/サーバID/ドメイン名/public_html/動かしたいプログラム.php
実行権限を変えておく
Cron設定が完了したら、プログラムの実行権限を変更します(実行権限がないとプラグラムが実行されずに403エラーが返ってきます)。
UnixコマンドやFFFTP等の属性変更の機能を使って実行権限を”701”等に変えておきます。
ブラウザからアクセスできないように設定する
バッチ処理用のプログラムをWEBサーバ上においてしまうと、アクセスされると誰でも動かせるようになってしまいます。
バッチ処理ブログラムファイルをDoS攻撃等されるとサーバが落ちてしまう可能性が高くなるため、アクセスできないファイル階層に格納するか、ファイルへのアクセスを禁止するようにします。
設定は簡単で、.htaccessファイルに以下のように追記し、保存します。これでブラウザからアクセスされてもバッチ処理プログラムは動かなくなります。
もし、手動で動かしたい時がある場合は、自分の固定IPアドレス等からはアクセスできるように設定してあげれば、ブラウザからも簡単に処理を実行できるようになります。
<Files "バッチ処理プラグラム.php"> Order allow,deny Deny from all </Files>
注意点
PHPでバッチ処理を作成する際には、きちんとアクセス制限を実施するようにします。重いバッチ処理をDoS攻撃されるとサーバに高負荷が掛かり、ダウンしやすくなります。