ページへ戻る

− Links

 印刷 

Ver 3.71.26 - 27 (ゲートウェイ"jobstack"の追加 と flock:LOCK_UN 問題の修正) のソース :: XOOPS マニア

xpwiki:xpWiki開発日記/2008-05-14のソース

« Prev[3]  
#navi(../)

#boxdate
* Ver 3.71.26 - 27 (ゲートウェイ"jobstack"の追加 と flock:LOCK_UN 問題の修正) [#uaace787]

&tag(基本設計,JobStack,ファイルロック,JobStack);

** 概要 [#s269f8d4]

- バックグラウンド処理を逐次実行するゲートウェイ "jobstack" を追加した。
- ゲートウェイ "bgrun" を廃止した。
- fclose($fp) をする前に flock($fp, LOCK_UN) をすべきではないので、その修正をした。 

** ゲートウェイ"jobstack"の追加 [#vb0dc2b8]

バックグラウンド処理を登録し、アクセスがある度に一件ずつバックグラウンドで処理をする仕組みを新たに追加しました。

それに、伴い ゲートウェイ "bgrun" を "jobstack" に統合しました。

プラグインを作成する時の参考となりますので、簡単に説明しておきます。

現状で、jobstack には、任意のHTTPアクセス(GETリクエスト)を行う "http_get" と ページ更新後の重い処理(plainDB 更新) を行う "plain_up" があります。

実際にジョブを登録するには、$this->func->regist_jobstack($data, $ttl) とします。 $data は、連想配列で例えば次のように指定します。

#code(php){{
$data['action'] = 'http_get'; 
$data['url'] = 'http://〜';
}}

$ttl は整数値で、そのジョブが実行される有効期限を秒数で指定します。省略可能で省略時の値は 864000 (10日間) です。

"http_get" アクションは、アクションプラグインを呼び出し、各種処理を行ったりすることに利用できます。 

"plain_up" アクションは、内部的に func->need_update_plaindb() 内で使われています。プラグインでのコンバート時、plainDB のリフレッシュを行いたい場合は、$this->func->need_update_plaindb($page) とすればOKです。$page は省略可能で省略時の値は $this->root->vars['page'] の値となります。

** flock:LOCK_UN 問題の修正 [#wab6afb2]

pukiwiki.dev の [[pukiwiki.dev:BugTrack2/306]] に上がっていた問題です。

fopen() でオープンし flock() でファイルロックを掛けた後、fclose() の前に flock() でアンロックすると、バッファに溜まっているデータがフラッシュされる前だとファイルが壊れることがあるという問題です。

自分なりに簡単に調べてみたところ、確かにそのようでしたので、その修正を行いました。

** CVS 更新内容 [#x01525bb]
#region(今回の更新分){{
-2008-05-14 16:17  nao-pon
--* xoops_version.php (1.342):
---Version 3.71.27
-2008-05-14 16:16  nao-pon
--* class/attach.php (1.3), class/func/pukiwiki_func.php (1.167),
plugin/ajaxtree.inc.php (1.8), plugin/code.inc.php (1.19),
plugin/counter.inc.php (1.6), plugin/dump.inc.php (1.7),
plugin/fusen.inc.php (1.24), plugin/online.inc.php (1.2),
plugin/tb.inc.php (1.2):
---"flock($fp, LOCK_UN)" is needless before "fclose($fp)".
-2008-05-14 14:08  nao-pon
--* ways/jobstack.php (1.2):
---Changed "error_reporting" from "E_ALL" to "0". (include ver
3.71.26)
-2008-05-14 14:00  nao-pon
--* class/func/xpwiki_func.php (1.166):
---Added runtime flag "root->rtf['plaindb_up_now']".
-2008-05-14 13:31  nao-pon
--* xoops_version.php (1.341):
---Version 3.71.26
-2008-05-14 13:28  nao-pon
--* plugin/: aws.inc.php (1.4), isbn.inc.php (1.8), showrss.inc.php
(1.9):
---Call function "need_update_plaindb()" on data update.
-2008-05-14 13:27  nao-pon
--* ways/bgrun.php (1.7), ways/jobstack.php (1.1), class/xpwiki.php
(1.82), class/func/xpwiki_func.php (1.165), class/include/init.php
(1.50), ini/pukiwiki.ini.php (1.74):
---Added a gateway "jobstack" and remove "bgrun".
}}

** 一行コメント [#y85268d3]
#comment

#navi(../)

« Prev[3]