On 7/17/06, Arief Yudhawarman <[EMAIL PROTECTED]> wrote:
Hai milisers,

Maaf kalau agak sedikit berbau perl.
Begini rekan2, saya ada script perl yg tugasnya mengupdate
file hash, sengaja saya tdk mau pakai mysql karena
datanya terlalu kecil, script perl ini dijalankan via
atjobs, dan ini tidak hanya satu melainkan banyak script
yg akan meng-update satu buah file hash yg sama.
Jarak / selisih waktu antara job yg satu dg yang lain, saya
kira cukup significant, yakni di atas 2 detik. Isinya kurang
lebih spt ini:

#!/usr/bin/perl

$ip = $ARGV[0];
$hashtable = "limithash.dat";
# open hashtable
dbmopen(%hash,$hashtable,0644);
  # updata hashtable
  $hash{$ip} = "226;No;No limit;0";
# close hashtable
dbmclose(%hash);

Dari sekian job, 20-an job untuk update file limithash.dat
di atas, ada beberapa, sekitar 3 atau 4, yg tidak terupdate.

Rekan2 yg perl mania mungkin bisa menjelaskan ?

coba pake flock ?

sebelon dbmopen dan sesudah dbmclose mungkin log ke file or syslog,
isinya filesize limithash.dat dan time mungkin, jadi tau di kapan gak
ke updatenya.

tetep gak jalan ?
coba pake fifo jadi yang update hash cuman 1 process
kira kira begini

updatedbm.pl
-- start --
#!/usr/bin/perl
dbmopen(..);
while ($line=<STDIN>) {
chomp($line);
$hash{$line}='...';
}
dbmclose(..);
-- end --

mkfifo pipe
while [ "1" == "1" ] ; do ./updatedbm.pl < pipe; done

yang mau update hash tinggal kirim
echo $ip > pipe

--
FAQ milis di http://wiki.linux.or.id/FAQ_milis_tanya-jawab
Unsubscribe: kirim email ke [EMAIL PROTECTED]
Arsip dan info milis selengkapnya di http://linux.or.id/milis

Kirim email ke