ページへ戻る

− Links

 印刷 

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

xpwiki:xpWiki開発日記/2008-05-14


2008 5月 14 (水)
 
ページ内コンテンツ
  • Ver 3.71.26 - 27 (ゲートウェイ"jobstack"の追加 と flock:LOCK_UN 問題の修正)
    • 概要
    • ゲートウェイ"jobstack"の追加
    • flock:LOCK_UN 問題の修正
    • CVS 更新内容
    • 一行コメント

Ver 3.71.26 - 27 (ゲートウェイ"jobstack"の追加 と flock:LOCK_UN 問題の修正) anchor.png[4] Edit [5]

Tag: 基本設計[6] JobStack[7] ファイルロック[8]

Page Top

概要 anchor.png[9] Edit [10]

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

ゲートウェイ"jobstack"の追加 anchor.png[11] Edit [12]

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

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

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

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

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

1
2
$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'] の値となります。

Page Top

flock:LOCK_UN 問題の修正 anchor.png[13] Edit [14]

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

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

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

Page Top

CVS 更新内容 anchor.png[17] Edit [18]

+  今回の更新分
  • 2008-05-14 16:17 nao-pon[19]
    • * xoops_version.php (1.342):
      • Version 3.71.27
  • 2008-05-14 16:16 nao-pon[19]
  • 2008-05-14 14:08 nao-pon[19]
    • * 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[19]
    • * class/func/xpwiki_func.php (1.166):
      • Added runtime flag "root->rtf['plaindb_up_now']".
  • 2008-05-14 13:31 nao-pon[19]
    • * xoops_version.php (1.341):
      • Version 3.71.26
  • 2008-05-14 13:28 nao-pon[19]
    • * plugin[20]/: 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[19]
    • * ways/bgrun.php (1.7), ways/jobstack.php (1.1), class/xpwiki[21].php (1.82), class/func/xpwiki_func.php (1.165), class/include/init.php (1.50), ini/pukiwiki[22].ini.php (1.74):
      • Added a gateway "jobstack" and remove "bgrun".
Page Top

一行コメント anchor.png[23] Edit [24]




Last-modified: 2008-05-16 (金) 23:21:01 (JST) (5824d) by nao-pon