CORE SERVERにインストールしたNextCloudのバックグラウンドジョブをAjaxからcronに変更したときのメモ。
設定画面ではなく、SSHでログイン。
*/5 * * * * /home/(アカウント名)/bin/cron_five_min.sh5分ごとに実行する書式。
ここに直接書くのではなく、一度スクリプトを別ファイルにしているのは、-eではなく、-rと一文字違いで中身が全て消えてしまうという落とし穴があるため。なるべくcrontabは実行したくありません。
対策として、編集するかもしれない部分を、cron_five_min.shを作っています。
vi ~/bin/cron_five_min.sh/usr/local/php81/bin/php -d memory_limit=512M -f /home/(アカウント名)/domains/(サブドメイン)/public_html/cron.php
sshのphpは、設定画面の[標準PHPバージョン]の設定で動作するようなのですが、NextCloudはphp81で動かしたいけど、他の都合でphp74を標準にしておきたいので、/usr/local/php81/bin/phpとphp81をフルパスにしています。
もう一つ、「-d memory_limit=512M」ですが、運用しているうちに
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1048576 bytes) in ...
というエラーが出る対策。
これはメモリが足りないというエラーなのですが、設定画面でmemory_limitを設定しても、SSHで実行するときには反映されていないようなので、スクリプトの中で-d memory_limit=512Mと明示します。
コメント