NASでcron♪

2017年9月23日19:00 公開


当初は常識的に?レンタルサーバー上でクーロン実行考えていたですが。

良く良く考えてみれば。

私が今クーロンで実行させたいと思っているスクリプトは、レンタルサーバーで実行する必要全然ない、んですよねー。

要はping出来れば良い、と。

でもって、NAS上で(ブラウザ通しての)プログラムはちゃんと動いているし。

基本、記事作成は、ローカル(NAS)で実行してるという運用。

で、ping(トラックバック)待ちデータを作成するタイミングは、記事作成時で、実際にping実行するのが、cronチェックして記事公開時間後、というのを想定してまして。

ローカルでの記事作成時に登録する情報は、作成する記事URLを含め、全てグローバルな情報なのでそのまま変更ナシで使える訳で。

なんかレンタルサーバーで何かあると嫌なので、NASでの運用一本に絞ろうと今のところは思ってます。

(他にcronでの実行考えているのは今は無いので)

で、肝心のNASなのですが。

最初はcron登録?と思って調べてましたが、単純に、NASのコントロールパネルに「タスクスケジューラ」なるものが存在していました。

そうこのタスクスケジューラで、実行させたいshを指定して、実行スケジュール登録すればOKという。

なんとお手軽なv

ちょっとphpの実行パスで悩みましたが。

これもsshで入って単純に探せばすぐ出てくる話。全く無問題です。

無論、タスクスケジューラでテスト実行も出来るのです。

で、このテスト実行で成功したので、良い気になっていたら。実際にタスクスケジューラで動いたらエラーが出てしまって。

何でだろうと考えてみたら、テスト実行時も結局、ブラウザからの実行なんですよね。

で、動かそうと思っているプログラム内では、最初にサーバー名をサーバー変数から取得してレンタルサーバーかどうかというのをチェックしていたりするんです。

ここでたぶん引っかかって、というよりブラウザ実行ではないから、基準となる値を取得出来ず、レンタルサーバーと判断されて、レンタルサーバー用のシステムディレクトリやDBが入っているディレクトリを設定して処理しているのではないか、と推測しました。

これを回避するには、サーバー名が空白の時には問答無用でローカル(NAS)判定、またはコマンドライン実行時はローカル判定とするしかないでしょう。うむ。

ということで対応しました★

(いいのか、本当にこれで。。。)

                    タスクスケジューラで実行させる cronjob.sh

# /usr/local/bin/php70 は NAS(Synology) php7 パス
# /volume1/web/hogehoge/you/index.php は codeIgniter 実行ファイル(htdocsに置く)
# cronjob は CodeIgniter の 実行させたいクラス: controller(index.phpで呼び出すapplication ディレクトリ内)
# tb_send は Cronjob.php 内の 実行させたいメソッド
/usr/local/bin/php70 /volume1/web/hogehoge/you/index.php cronjob tb_send
                
                    コマンドラインからの実行かどうかを判断する

// config/routes.php や、controller で必要に応じて

if (php_sapi_name()=='cli' || PHP_SAPI === 'cli') {
    // コマンドライン実行の場合の処理
    // こんな風に、echoしておくと、タスクスケジューラで指定したログに出力される
    if ($result_success) {echo 'success cronjob : ' . date("Y/m/d H:i:s", time());}
    exit;
} else {
    // 通常の処理
}

                

あと、NASの管理者画面について。

最初、「基本モード」だったので、コントローラパネルにタスクスケジューラ自体が表示されていなかったんですよね。

(「上級者モード」にしないと出てこないメニューが結構ありました)

ここだけ、単純なだけにひっかかる所かも。って私だけですか。。。



メニューページ

メインコンテンツ

タグ別

公開日別

Popular Entries

うちの型落ちMacもぽちぽちとアップデートかけていたりする訳ですが。最近ちょっと多くないですかー?Big Surさん?ちょっと勘弁して欲しいんですけど!確かに明らかにクライアントとして使用すべきMac
Read more
当初は常識的に?レンタルサーバー上でクーロン実行考えていたですが。良く良く考えてみれば。私が今クーロンで実行させたいと思っているスクリプトは、レンタルサーバーで実行する必要全然ない、んですよねー。要は
Read more
php7.2 へのバージョンアップが予定通り、レンタルサーバーさんでされました。一応、事前にドキュメント読んだりはしたつもりだったですが。出ました。思いっ切り出ましたね!エラー。しかも、ちょっと恥ずか
Read more
全然気づいていなかったけれども。コンテンツサイトでjstreeが動かなくなっていたんですよね。ちょっと前にごちょごちょ弄くってはいたので、何かやらかしたか?!と思っていたのですが。(ほら、jsだから、
Read more
ちょっと都合に付き、MySQLをサイトで使うようにしようかなと思い立ちました。でもいきなりレンタルサーバー様でMySQL使うのはリスキー。取り敢えず、検証環境で使えるように、とうことで、やはりNASで
Read more

Recent Comments

Information

緊急連絡は現在ありません。

Recent Update

さて。改装しておよそ1か月経過しました。といっても、見かけは変えてないつもりなのでわからないでしょーが。今回の改装ポイントは、前は完全関数型使用でした、が、今回は可能な限りクラス使用しています。うん、
Read more
DjangoでのエラーをADMINSにメール送信出来る環境を整え。なかなか良い感じにバグフィックス出来るようになってきたな~Sentryお役御免か?なんて良い気になってましたよ、ハイ。すいません、私で
Read more
うちの型落ちMacもぽちぽちとアップデートかけていたりする訳ですが。最近ちょっと多くないですかー?Big Surさん?ちょっと勘弁して欲しいんですけど!確かに明らかにクライアントとして使用すべきMac
Read more
PythonとDjangoアップデートであります。早いですよ、やっぱり!(Pythonも3.9。。。4はいつ頃なんだっけ?確かもうスケジュールされてたような。あれ、Djangoだけかな)Djangoで
Read more
サイト改装、というか、プログラム&フレームワーク切替から少々時間経過しました。(確か8月頭に処理した筈)思わぬエラーや自分的見落としやらミスによるエラー対応もほぼほぼ終了。終息したかなっと思ってます。
Read more

Preview

Information(Board)

サイト改装しました! といいつつ、表向きは全く変わらない(ように作った)筈です。 何かおかしいところがございましたら、ご連絡頂けると助かります。
Read more