Sidebar |
タイトル
執筆:2024.02.24
編集:2024.02.24 Ajax: 各ページが読み込まれる度に1つのタスクを実行します。 Webcron: cron.phpは、HTTP越しに5分おきにcron.phpを読み出すWebcronサービスにより登録されています。 Cron (推奨): システムのcronサービスを利用し。 一番安い共有サーバーだとcronに登録できないので、Ajaxを使うしかないのです。 Ajaxだとファイル操作の転送数が追い付かないので ○○日前です と表示されてしまう。 応急処置は php -d memory_limit=512M cron.php
を [ 最終ジョブ実行は 秒前 です。 ] と表示されるまで繰り返す設定を戻す php -d memory_limit=512M occ background:ajax
ファイルが壊れたり何かしらの不具合が起こるのも面倒なので cron Webcronを使いたいですよね ちょっと考えてみたのですが、簡単に導入できそうです。 あれですね。 Googleとかのクロールがくる軽いページに、コマンドを埋め込むのが確実ですね。 どのページがいいか考えるのとてもめんどうですよね。 5分毎は、キャッシュフォルダに、適当なファイル作って、時間比較して実行する感じにすると簡単です。 比較 No 何もしない 比較 Yes: (1) キャッシュファイルを現在時刻に更新する(多重実行させないため) (2) 非同期でWebcron(cron.php)にアクセスしてジョブを捨てる。もしくは直接 cron.phpを非同期で実行する もともとのスクリプトの実行を継続する。 こんな流れでOK. 面倒ならphp.iniのスタートアップファイルの中にいれてしまえばOK. auto_prepend_file="PHPがスタートしたときに最初に自動で読み込まれる設定ファイル.php"
重いかどうかとか スルーするかどうかは、適当にリクエストuriで判定すればいい。 ある程度アクセスあるサイトなら1分に数件は確実にアクセスありますから、そこをトリガーに実行してしまえばOK. 重くなっても、5分に1回なのでそれほど影響はないでしょう。ジョブの停滞よりはマシ。 実行OKまたはスルーするURIを追加で条件式に入れてしまえば そうそう重くなることはないでしょう 変なものをはかないように ob_startで保護したほうがいいでしょうか? cron-nextcloud.php <?phpauto_prepend_fileで指定したファイルにインクルードしてしまえばOK. @include('pathto/cron-nextcloud.php'); auto_prepend_fileをphp.iniに設定していないのなら直接指定OK auto_prepend_file='pathto/cron-nextcloud.php'
いい感じですね 早速導入してみますね カテゴリー: General
2024.02.24
|
Sidebar |