●会場内サーバのプログラム
・会場内サーバメインプログラム
会場内サーバはWindowsノートPCを使用した。回線はUQ WIMAX。ActivePerlで下記のプログラム「main.pl」を動かし、数秒おきに会場外サーバと通信させた。会場外サーバの「check.php」が「1」を返せば、ログファイルである「outdata.xml」をダウンロードする。
当初は、会場外サーバにあるプログラムもすべて会場内サーバで動かし、携帯から直接会場内サーバへアクセスすることを考えていたが、UQ WIMAXの性質上、常時接続でIPアドレスの固定が難しい。今回採用した方式ならば、多少のタイムラグはあるが、会場内サーバのIPアドレスが変化しても問題ない。また、パケット代節約にもなる。
CDトレイのオープンは、Windowsプログラムの「eject-nt.exe」を「main.pl」から実行する。
[codesyntax lang=”perl” title=”main.pl”]
#!usr/bin/perl use LWP::Simple; use File::Copy; $url_1 = "http://techtroid.xii.jp/m/mixart/check.php"; $url_2 = "http://techtroid.xii.jp/m/mixart/outdata.xml"; $file_2 = 'outdata.xml'; $Interval = 5; $loop = int(131000/$Interval); $count = 0; while(1){ #last if($count > $loop); #タイマ処理 my $t_before = time; sleep ($Interval); my $t_after = time; my $t_offset = $t_after - $t_before; my ($b_ss, $b_MM, $b_hh, $b_dd, $b_mm, $b_yy) = (localtime($t_before))[0..5]; my ($a_ss, $a_MM, $a_hh, $a_dd, $a_mm, $a_yy) = (localtime($t_after))[0..5]; $b_yy += 1900; $b_mm++; $a_yy += 1900; $a_mm++; print $t_offset*$count."sec\n"; $count++; print $count."\n"; #アクセス時の処理 if(get($url_1) == "1"){ #ページ更新 print get($url_2)."\n"; open (FILE, ">$file_2") or die "$!"; print(FILE get($url_2)) or die($!); close (FILE); print "アクセスがありました!\n"; #CDイジェクト print "トレイをオープンします\n"; print "-------\n\n"; print `eject-nt`; print `eject-nt -t`; }elsif(get($url_1) == "0"){ print "-------\n\n"; print `eject-nt -t`; }else{} }
[/codesyntax]
・アクセス状況をモニタへ表示
最新のアクセスログは、ダウンロードされたログファイル「outdata.xml」をFlashへロードし、モニタへ表示させる。