Coreserverにおける「CRONによるphpの動かし方」を備忘のため投稿します。
1.まずはshファイルやphpファイルの置き場所を考えます。
Coreserverでは、外部公開用の「public_html」フォルダよりも上の階層にshファイルやphpファイルを設置でき、動かすことができます。
CRONで動かすphpファイルは、基本的に外部から触られたくないので嬉しいですね。
今回は「public_html」と同じ並びにフォルダを作成して、実行するphpファイルを格納しました。
2.Tera termのSSH接続によりphpファイルを動かしてみます。
ブラウザでアクセスする場合と、CRONによりphpファイルを実行する場合とでは挙動が異なる場合があります。
そのため、設置予定のphpファイルがブラウザで正常に動いていたとしても、Tera termで直接確認することをお勧めします。
(結局手っ取り早いです。)
例
(補記)require先のパス指定のコツ
と設定した方が良さそうです。
(カレントディレクトリの認識が上手くいかない場合があるとのこと。)
また、上手く動かない命令があるときは、動作させるphpのバージョンを確認してください。
3.shファイルを作成します。
CRONで実行するshファイルを作成し、「public_html」と同階層の任意の場所に設置します。
例
5.coreserverのコントロールパネルからcronの設定を行います。
サイト設定→CRONジョブから「CRONジョブの新規作成」を行います。
シェルスクリプト名は先ほどの設置したshファイルのフルパスを記載してください。
例
「分・時・日・月・曜日」には、CRONジョブを実行するタイミングを入力します。
1.まずはshファイルやphpファイルの置き場所を考えます。
Coreserverでは、外部公開用の「public_html」フォルダよりも上の階層にshファイルやphpファイルを設置でき、動かすことができます。
CRONで動かすphpファイルは、基本的に外部から触られたくないので嬉しいですね。
今回は「public_html」と同じ並びにフォルダを作成して、実行するphpファイルを格納しました。
2.Tera termのSSH接続によりphpファイルを動かしてみます。
ブラウザでアクセスする場合と、CRONによりphpファイルを実行する場合とでは挙動が異なる場合があります。
そのため、設置予定のphpファイルがブラウザで正常に動いていたとしても、Tera termで直接確認することをお勧めします。
(結局手っ取り早いです。)
例
cd /virtual/(ユーザ名)/(phpフォルダ格納先)/usr/local/bin/php run.php
(補記)require先のパス指定のコツ
require_once("./init.php");より
require_once( dirname(__FILE__) . '/init.php");
と設定した方が良さそうです。
(カレントディレクトリの認識が上手くいかない場合があるとのこと。)
また、上手く動かない命令があるときは、動作させるphpのバージョンを確認してください。
3.shファイルを作成します。
CRONで実行するshファイルを作成し、「public_html」と同階層の任意の場所に設置します。
例
#!/bin/sh# cron shell for coreservercd /virtual/(ユーザ名)/(phpフォルダ格納先)/usr/local/bin/php run.phpexit
ここでphpを実行する命令行は、実際にTera termで動作確認したものを記載します。
なお、改行コードはLF(Unix系)、文字コードはUTF-8としましょう。(重要)
4.Tera termのSSH接続によりshファイルを動かしてみます。
phpファイルと同様に直接shファイルを実行してみてください。
なお、改行コードはLF(Unix系)、文字コードはUTF-8としましょう。(重要)
4.Tera termのSSH接続によりshファイルを動かしてみます。
phpファイルと同様に直接shファイルを実行してみてください。
$ sh /virtual/(ユーザ名)/cron.sh
5.coreserverのコントロールパネルからcronの設定を行います。
サイト設定→CRONジョブから「CRONジョブの新規作成」を行います。
シェルスクリプト名は先ほどの設置したshファイルのフルパスを記載してください。
例
/virtual/(ユーザ名)/cron.sh
「分・時・日・月・曜日」には、CRONジョブを実行するタイミングを入力します。
最短1時間以上で設定が可能で、各値に合致したタイミングで処理を流します。
「分」には何らかの値を入力し、「時~曜日」のうち、どんなタイミングでも良いものは「*」を入力します。
例1:1時間に1回処理を行う。
「分」には何らかの値を入力し、「時~曜日」のうち、どんなタイミングでも良いものは「*」を入力します。
例1:1時間に1回処理を行う。
分:0時~曜日:*
例1は、各時間の0分(例:9時00分、10時00分…等)に処理を行う設定です。
基本的にこれらの設定で完了です。
動かない場合は、再度Tera termにてshファイルやphpファイルを実行してみて確認したり、
shファイルの文字コード、改行コード等を確認してください。
以上です。
例2:1日に1回処理を行う。
例2は、毎日0時0分に処理を行う設定です。分:0
時:0日~曜日:*
基本的にこれらの設定で完了です。
動かない場合は、再度Tera termにてshファイルやphpファイルを実行してみて確認したり、
shファイルの文字コード、改行コード等を確認してください。
以上です。