Loading

#Memo - FastCGI

က်ေနာ္တို့ unix က shell ထဲမွာ script ကို run ရင္

#!/bin/sh
#!/usr/bin/perl

စသျဖင့္ ထိပ္ဆံုးလိုင္းမွာ ေရးေလ့ေရးထရွိပါတယ္။

windows မွာဆိုရင္ script run ခ်င္ရင္ wscript.exe script.vs စသျဖင့္ run တာနဲ့ ဆင္မယ္ထင္ပါတယ္။

အဲသလို run ရင္ wscript.exe, sh, perl စတဲ့ main program ကို အရင္ load လုပ္ရပါတယ္။

web site အေနနဲ့ ဆိုရင္ user ရဲ့ request တိုင္းမွာ အဲလိုလုပ္ေနရရင္ performance ကို ထိခိုက္ပါတယ္။

အဲဒါကို ေျဖရွင္းဖို့ တစ္နည္းကေတာ့ apache ရဲ့ modules အေနနဲ့ လုပ္ထားတဲ့ mod_cgi, mod_perl, mod_python စတာေတြသံုးပါတယ္။ တစ္ခါ ပဲ load လုပ္ထားတဲ့ သေဘာေပါ့။

ေနာက္တစ္နည္းကေတာ့ FastCGI, fcgid စတာေတြနဲ့ cgi, php, python, ruby ေတြကို memory ေပါ္ကို တစ္ခါဆြဲတင္ျပီး ထပ္ခါထပ္ခါ memory ေပါ္ကေနပဲ သံုးတဲ့ နည္းပါ။

ဥပမာ - ေဟာ့ဒီ perl script ဟာ FCGI ကို သံုးထားျပီး page ကို refresh လုပ္တိုင္း
I have run 1 times. I have run 2 times. I have run 3 times. စသျဖင့္ တိုးတိုးသြားမွာ ျဖစ္ပါတယ္။

#!/usr/bin/perl

# တစ္ခါပဲ run

$counter=0;

# ထပ္ခါတစ္လဲလဲ run

use FCGI;
while ( FCGI::accept() >= 0 ) {
$counter++;
print "Content-type:text/html\n\n";
print "I have run $counter times.";
}

cache နဲ့ မတူပါဘူး။ cache က အေျကာင္းအရာ တစ္ခု တည္းကို ပဲ ျပန္ output ထုတ္ေပးမွျဖစ္ျပီး ဒီဟာကေတာ့ program run တဲ့ speed ကို ျမန္ေအာင္ memory ေပါ္တင္ထားတဲ့ နည္းလို့ေျပာလို့ရမယ္ထင္ပါတယ္။

memory ေပါ္ကဟာ ကို ေဟာ့ဒီလို ေခါ္ျကည့္လိုက္ရင္၊ ေဟာ့ဒီလိုမ်ိုး memory ေပါ္မွာ ရွိေနတာကို ေတြ့နိုင္မွာပါ။
PID  PPID  C STIME TTY          TIME CMD
12419 21017 0 06:13 ? 00:00:00 /usr/bin/perl test.fcgi

FCGI ကို သံုးဖို့အတြက္ mod_fcgi လိုအပ္ပါမယ္။
.htaccess မွာျဖစ္ျဖစ္ httpd.conf / apache2.conf စတာေတြမွာ ေဟာ့ဒီလို့ထည့္ေပးရပါလိမ့္မယ္။
AddHandler fastcgi-script .fcgi
Options +FollowSymLinks +ExecCGI

.fcgi ဖိုင္ကို executable access ေပးရပါလိမ့္မယ္။
chmod +x test.fcgi

Cheers,
Soe Min

No comments:

က်ေနာ္ဖတ္ေသာ အျခား ဘေလာ့ / ဆိုဒ္မ်ား