get@perl@xserver


とあるウェブサイトのオーナー様より、よそにあるサーバがリアルタイムで生成する
とある機器の計測値を取得しウェブサイトに表示させたいと依頼を受けた。

知り合いでもあるその人からperlで作られたサンプルプログラムをもらい、
2ヶ月前にJavasriptと組み合わせて5秒ごとにデータを取得する仕組みを作り、
sakuraに設置した仮環境にてテストしたところ問題なく動作。

さて本日本稼働させようとxserverに設置したところ、
なんとブラウザがフリーズ。

これはまずいといろいろ試した結果、perlで使われていた他サーバからの値取得に使うget関数でのデータ取得にやたら時間がかかっており、結果応答不能に陥っているがわかった。
xserverの仕様で、サーバからの外部アクセスに制限がかかっているのかもしれない。

回避策としてまず、sakuraのサーバにデータ取得のperlスクリプトを設置し、
そこに本サーバのJSからアクセスできないか試みた。
これはまあ予想はしていたが不可。jsから外へはデータを取りに行っていない。

今度はだめもとでphpでfile_get_contents()を使いxservJSでphpをよび、そこからsakuraにおいたperlスクリプトを呼んでみた。何とも不経済なほうほうだが、perlの内容をphpに移植するのは非常に面倒なのでやむなしとする。問題の先送り。

期待はしなかったがこんどは普通に取得できた。5秒おきのjsからのアクセスに難なく答えてくれている。

 

今回は事前のテストの不足によるミスだ。各社サーバにより普段気づかない仕様や制限の違いが存在することに対する認識がおろそかだった。