2. cronジョブの設定
FTBucketの一部の機能は、定期的にスクリプトを実行することで動作します。この自動実行の仕組みを「cronジョブ」と呼びます。
このドキュメントでは、FTBucketで利用するcronジョブの設定方法について説明します。
cronとは?
cronは、LinuxなどのUnix系OSに標準で備わっている機能で、指定したスケジュール(例: 「毎日午前3時」「10分ごと」など)でコマンドやスクリプトを自動的に実行させることができます。
各スクリプトの役割と設定例
サーバーの crontab に以下の設定を追加することで、FTBucketのメンテナンスが自動化されます。
Note:
/path/to/your/project/src/の部分は、実際のFTBucketの設置パスに置き換えてください。
cron_get.php (スレッドの自動更新)
- 役割: 保存されているスレッドの差分を自動的に取得し、更新します。
- 実行間隔の例: 10分ごと
*/10 * * * * php /path/to/your/project/src/cron_get.php
補足
高負荷で止まってしまう場合やbatchの多重起動対策をしたい場合 次のようなbashスクリプトを用意しこれをcron登録する方法があります。
#!/bin/bash
# batchの二重起動防止
exec {lock_fd}< $0
flock --nonblock ${lock_fd} || exit 0
# phpが固まった状態ならapache再起動
wget -O /dev/null -q -T 10 -t 1 http://<localhost設定URL>/json_api.php?action=readallurl
if ! [ $? = 0 ]
then
service apache2 restart
sleep 10
fi
# 自動更新 cron_get.php を呼び出し タイムアウトで apache再起動
timeout 600 sudo -u www-data /usr/bin/php /var/www/html/<設置フォルダ>/cron_get.php
if ! [ $? = 0 ];then service apache2 restart;sleep 10;fi
cron_del.php (古いログの削除)
- 役割:
config.phpのLIFETIME設定に基づき、古くなったスレッドをサーバーから削除します。 - 実行間隔の例: 1日1回 (例: 深夜2時)
0 2 * * * php /path/to/your/project/src/cron_del.php