Apache::Session::Lock::File モジュール

by Hippo2000(2000/8/8)

日本語チョウ訳シリーズ Apache::Session::Lock::File モジュールなのです。



名前

Apache::Session::Lock::File - flockを使って相互排他を提供します


概要

 use Apache::Session::Lock::File;

 my $locker = new Apache::Session::Lock::File;

 $locker->acquire_read_lock($ref);
 $locker->acquire_write_lock($ref);
 $locker->release_read_lock($ref);
 $locker->release_write_lock($ref);
 $locker->release_all_locks($ref);
 $locker->clean($dir, $age);

説明

Apache::Session::Lock::FileはApache::Sessionのロックのインターフェースを完全に満たします。相互排他は一時ファイルとflock関数を使うことにより実現されます。


コンフィグレーション

このモジュールは一時ファイルをどこに作成するかを知らなければなりません。通常のApache::Session形式で引数を渡さなければなりません。引数の名前はLockDirectoryで、その値はそこにロックファイルを作って欲しいパスです。例:

 tie %s, 'Apache::Session::Blah', $id, {LockDirectory => '/var/lock/sessions'}

この引数を質しなければ、一時ファイルは/tmpに作成されます。


NOTES

このモジュールは一時ファイルを削除しません。というのもそれは適切なロックを妨げるからです。これは、そのファイルシステム(ext2)が1つのディレクトリにたくさんのファイルがあるとパフォーマンスがよくない、ある種のシステム(Linux)では問題になるかもしれません。この問題を避けるためには、ロック・ディレクトリから古いフィルをきれいになくすスクリプトを使わなければなりません。

古いの意味は実装者のポリシー決定にまかされす。しかしメソッドはそのポリシーを実装するためのメソッドは提供されます。$age秒間、変更されていないファイルを削除するために、このモジュールのcleanメソッドを使うことが出来ます。例:

 my $l = new Apache::Session::Lock::File;
 $l->clean('/var/lock/sessions', 3600) #1時間より古いファイルを削除する

作者

(原文のまま)

This module was written by Jeffrey William Baker <jwbaker@acm.org>.


参考資料

Apache::Session


ホーム Perlの小技 Apache::Session

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。