こんにちは、WPホームページ研究所の運営サポートチーム(@WP_LABO)です。
特定の条件でだけPHPを実行したい。そんなシチュエーションがありますよね。たとえばPHPでは一般的なプログラミングの書き方をすると「来訪者のアクセス時にファイルが毎回実行」されます。
そのため「1アクセス=1実行」となり、ユーザーからのアクセスがあれば毎回PHPを実行するわけです。ワードプレスのような動的ウェブサイトなら問題ありませんが、外部APIへ接続してデータベース内に値を保存したうえで文字を出力するような仕組みの場合であればすぐAPI接続上限回数に達してしまいますよね。
本記事では「不特定多数からのアクセス時にはPHPファイルを実行せず、定期的に一定の間隔でPHPファイルを実行する方法」についてご紹介いたします。覚えておくと開発の範囲が広がります。
cronからのアクセスだけを実行処理するPHP設定
結論から言うと「cron(クーロン)」を使えば解決できます。そして設定時に“環境変数”を持たせます。下記はエックスサーバーの例を書いていますがミックスホストでも同じ機能が活用できます。もし「public_html」より上の階層にPHPファイルを置くならわざわざ環境変数を使って条件分岐をする必要はありません。
PHP内に実行条件を追加する
環境変数を使った条件文が以下です。もしCRONの値が1なら実行するという書き方。
if (getenv('CRON') == 1 ) {
//実行する処理
}
次が「cron」の設定。実行コマンドの書き方は以下です。環境変数となる「CRON=1」を設定しています。
CRON=1 /usr/bin/php7.4 /home/サーバーID/example.com/public_html/name.php
PHPのバージョンとサーバーIDは状況に合わせてご変更ください。もし仮に契約中のサーバーIDが「xs77777」でドメイン(example.com)の設定が「PHP7.3」でドメイン直下のindex.phpを実行するなら以下。
CRON=1 /usr/bin/php7.3 /home/xs77777/example.com/public_html/index.php
カンタンに言うと「環境変数・PHPのバージョン指定・サーバールートからPHPファイルまでの場所」の3つを設定しています。すべて半角スペースで空けて記述する必要があります。
cronの処理を追加する
最近はレンタルサーバーもcronが使えます。エックスサーバーで解説いたします。
設定画面では以下の画面が表示されます。
以下は「毎時15分」でファイルを実行する書き方です。cronは設定したタイミングから動き始めます。たとえばもしcronを追加した時刻が「午前11時」だったとしたら以下の通り順次実行される仕組みです。
・11時15分に実行(毎日)
・12時15分に実行(毎日)
・13時15分に実行(毎日)
24時間ずっと毎時15分に実行されます。
もし“時間”を「*」から「23」へ変更すると毎日「23時15分」に一度実行される設定が作れます。当然ですが環境変数による条件分岐をPHP側で行わない場合は「CRON=1」を指定しなくてもOKです。
上記では以下タイミングで実行されます。
・23時15分に実行(毎日)
アクセスが落ち着いてきた頃に一度実行するのであれば23時以降に動くcronを設定するのがおすすめです。
時刻に関係なく15分毎で実行する方法
実行ペースを上げるなら以下でもOK。
上記の書き方では15分毎で実行されます。
・11時00分に実行
・11時15分に実行
・11時30分に実行
・11時45分に実行
・12時00分に実行
・12時15分に実行
細かく言うとcronを設定した時刻にもよりますが15分毎で動作する書き方ですね。もちろん、レンタルサーバー側でも設定後にどのタイミングで動くかは違うので厳密に言うと少しズレがあるかもしれません。
まとめ
本日は「環境変数を使ったcron設定」をご紹介いたしました。
たとえば1日のAPI接続回数上限が100回だとしたら「1時間で約4回(正確には4.16回)実行可能」です。仮に1時間に4回までOKだとしたら「15分に一度実行」すればギリギリ上限には達しませんよね。
APIを使ったシステムの開発では提供元から「接続回数の上限設定」があるので事前確認しておきましょう。
補足
エックスサーバーでは運営ドメインのバージョンは以下で確認できます。
使用しているバージョン毎で指定パスも違います。PHPのバージョン指定をする「PHPバージョンまでのパス」は「アカウント > サーバー情報 > コマンドパス一覧」内にまとめて記載されています。
最新式の無料プラグインを事前公開
WordPressは公式サイトに登録済みのプラグインだけで全機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグインを無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
→ 改良されたプラグインを確認する