マニュアル目次 > サーバーの準備(導入担当者向け)

cronの設定

このプラグインの心臓部です。必ず設定してください。

なぜcronが必要か

管理画面のボタンやコンテンツの保存は、「作るページの一覧に積む」だけです。実際にHTMLを作るのは cron です。詳しくは このプラグインの仕組み を参照してください。

設定する3本

crontab の例(パスは環境に合わせてください)

*/5 * * * * cd /var/www/html && bin/cake hat_static_engine work -q
30 3 * * *  cd /var/www/html && bin/cake hat_static_engine full -q
0 4 * * 0   cd /var/www/html && bin/cake hat_static_engine purge-logs -q
コマンド役割間隔の目安
work必須 キューを処理して実際にHTMLを作ります。これが無いと何も生成されません。 5分おき。すぐ反映したいなら1分おきでも構いません
full 全ページ再生成を予約します。この行では収集も生成もしません。対象URLの収集は次回の work が行います(1万ページ規模でも詰まらないようにするためです)。work が登録されていないと何も起きません。 1日1回、アクセスの少ない時間帯
purge-logs 90日より前のログを削除します(日数は --days 30 のように変えられます)。無くても動きますが、放置するとログが増え続けます。
消えるのは管理画面のログだけです。ファイル側(logs/hat_static_engine.log)は logrotate などで別途管理してください。
週1回
設定「静的生成の有効/無効」がオフの間、cron は1件も処理しません。 「静的生成が無効になっているため実行しませんでした」とだけ表示して正常終了します(エラーにはしません)。 cron を登録したまま一時的に止めたいときは、設定をオフにしてください。 なお purge-logs はオフでも動きます。
full の時刻は、設定画面の「全ページ再生成の実行時刻」と合わせてください。 設定画面の時刻だけを変えても、cron が動く時刻は変わりません。逆に、管理画面から手動で全ページ再生成する運用なら full の cron は不要です。

間隔と件数の関係

1回の work で処理できる件数は、設定画面の「Cron実行1回あたりの最大処理件数」(初期値30)と「実行の最大秒数」(初期値120)で決まります。先に達したほうで打ち切られ、残りは次回に持ち越します。

1時間あたりの処理能力は、おおよそ次のようになります。

cronの間隔1回の件数1時間あたり1000ページの一巡
5分おき30件360件約3時間
5分おき100件1200件約1時間
1分おき30件1800件約35分
実測値は ダッシュボード の「生成のペース」で確認できます。 「1ページあたりの平均」が分かれば、1回の実行で何件こなせるか(最大秒数 ÷ 平均)を計算できます。まず初期値で1回まわしてみて、それから調整するのが確実です。
「実行の最大秒数」は、cron の間隔より短くしてください。 前回の実行が終わる前に次が始まると、後から来たほうは鍵に阻まれて何もせず終わります(壊れはしませんが、実質的に処理が進みません)。

動いているか確認する

  1. 手で1回実行してみる
    cd /var/www/html
    bin/cake hat_static_engine status

    設定と件数が表示されれば、コマンド自体は動いています。パスやPHPのバージョンが違うとここで失敗します。

  2. キューが減るか見る

    ダッシュボードで「未処理」の件数を控え、5分ほど待ってから再読み込みします。減っていれば cron は動いています。

  3. 減らない場合

    cron の実行ユーザー、PHPのパス、作業ディレクトリを確認します。cron のログにエラーが出ていないかも確認してください。

注意点

項目内容
実行ユーザー書き出し先と公開先に書き込めるユーザーで実行してください。Web経由の実行(管理画面のボタン)とユーザーが違うと、片方で作ったファイルをもう片方が上書きできないことがあります。
二重起動心配は要りません。実行中は鍵がかかり、後から来た実行は何もせず終わります。
-q オプション出力を抑えます。付けないと cron からメールが飛び続けます。
ログファイルlogs/hat_static_engine.log は自動で削除されません。logrotate などで管理してください。