Tag: 基本設計[6] JobStack[7] ファイルロック[8]
バックグラウンド処理を登録し、アクセスがある度に一件ずつバックグラウンドで処理をする仕組みを新たに追加しました。
それに、伴い ゲートウェイ "bgrun" を "jobstack" に統合しました。
プラグインを作成する時の参考となりますので、簡単に説明しておきます。
現状で、jobstack には、任意のHTTPアクセス(GETリクエスト)を行う "http_get" と ページ更新後の重い処理(plainDB 更新) を行う "plain_up" があります。
実際にジョブを登録するには、$this->func->regist_jobstack($data, $ttl) とします。 $data は、連想配列で例えば次のように指定します。
1 2 |
|
$ttl は整数値で、そのジョブが実行される有効期限を秒数で指定します。省略可能で省略時の値は 864000 (10日間) です。
"http_get" アクションは、アクションプラグインを呼び出し、各種処理を行ったりすることに利用できます。
"plain_up" アクションは、内部的に func->need_update_plaindb() 内で使われています。プラグインでのコンバート時、plainDB のリフレッシュを行いたい場合は、$this->func->need_update_plaindb($page) とすればOKです。$page は省略可能で省略時の値は $this->root->vars['page'] の値となります。
pukiwiki.dev[15] の pukiwiki.dev:BugTrack2/306[16] に上がっていた問題です。
fopen() でオープンし flock() でファイルロックを掛けた後、fclose() の前に flock() でアンロックすると、バッファに溜まっているデータがフラッシュされる前だとファイルが壊れることがあるという問題です。
自分なりに簡単に調べてみたところ、確かにそのようでしたので、その修正を行いました。
今回の更新分 |
|
(This host) = https://xoops.hypweb.net