Google
    
<< TOPページ 掲示板TOP 記事データ お知らせメール ▼レス(1) >>

mod_perl で ファイルから取り込んだ値をメモリに格納する風味

 ( メビウスリング日記 )
- アクセス(109) - いいね!(0)

あうら☆マスター ★管理者

ファイル読み書きでかなりサーバーは重くなるので、
固定された設定ファイルを読む時は、いちどだけ読み込みをおこなって、その後はメモリに格納できたら便利です。

MySQL などデータベースを使えば良いのでしょうが、よくわからないので非効率にも MOD_PERL で実現してみます。

*データベースを使える人は真似せず、おそらく素直にデータベースを使った方が良いと思います。

*1

まずはApacheの設定ファイル ( httpd.conf など )で、Apacheの起動時に、スタートアップファイルを読めるようにしておきます。
スタートアップファイルについて詳しくは、ウェブで調べてみてください。

*2

次に、startup.pl に取り込みたいモジュール名を書いていきます。

*3

モジュールの裸の部分に、mod_perl で実行したい処理を記述しておきます。
同じモジュールは一度しか読み込まれないため、この処理はいちどしか実行されません。

*4

スクリプトの各部分では

my($init) = Example::init();

を実行すれば、ファイルを開かずして設定値が取得できます。


--

・startup.pl には直接、Example::init(); と書けるんでしたっけ…。書ける場合はそちらの方が良いかも。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
*1 httpd.conf
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

# Perl Module
# 'conf/startup.pl' の部分はサーバーに応じて、設定ファイルを置いた場所に書き換えてください

<IfModule mod_perl.c>
PerlRequire conf/startup.pl
</IfModule>

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
*2 startup.pl
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

# ここでは単純に、自作モジュールを use しているだけです

use Example;

1;


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
*3 Example.pm
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

use strict;
package Example;

# MOD_PERL 実行下であれば、設定ファイルを取り込みます
# メモリに格納するだけなので、実際の設定値は受け取っていません
if($ENV{'MOD_PERL'){ Example::init(); }

#-----------------------------------------------------------
# 設定ファイルを読み込み
#-----------------------------------------------------------

sub init{

our(%init);
# ご存知グローバル変数です
# 未検証ですが、グローバル変数が嫌な場合は クロージャを使うと良いかもしれません。
# Perl 5.010 以降で mod_perl を実現できている場合は state(%init); ?

# 既にグローバル変数が存在する場合はファイルを開かずに、設定値をそのまま return します
if(%init){ return(\%init); }

# 〜中略〜
# ファイルを開き、色々と処理して、 %init に設定値を代入していきます

# ファイルを開いた場合も、同じように設定値を返します
return(\%init);


}


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

my($init) = Example::init();

print "Content-type:text/html\n\n";

print "$init->{'title'}"; # 自分で定義した任意の名前
print "$init->{'guide'}"; # 自分で定義した任意の名前

5年前 No.0
ページ: 1


 
 

モクちゃん@aotomizu ★AU=TFfSDwKh1C

何のことかわかりません><
・・・わかりました気になったことは調べておきますね!(何

でもこういうのって、本当に好きじゃないと出来ませんよね。
まぁ僕も好きなものは、多少大変でも頑張れたりするしなぁ。
あ、関係ないですね><

何にせよ、いつもお疲れ様です!

5年前 No.1
ページ: 1

 
 
<< TOPページ 掲示板TOP 記事データ お知らせメール ▲ページ上 >>
★必ず ローカルルールメビウスリングのルール をご覧ください。
 ▼スタンプ▲スタンプ
※スタンプはいちどに 3個 まで使えます  ×閉じる