2006年11月06日

Perl版理解して組めたもののhttp接続が切れず

昨日から唐突にPerlの関数を頭の中に流し込んでいるのだが
調べてみるといろいろと選択肢がある事がわかった。
昨日の段階で「POSTはCGIパッケージを使う」
としていたが例えば環境変数でも扱えそうだ。

しかし意味必要なのは学ぶことではなくて作ること
PHP最大の懸案であった「別のファイルの起動」をまずやろうと思った。
その前にPerl版をまとめることにした。
がここにソースをかけるところにいたっていない。

サーバーは動作するし内容も完全に理解しているのだが

close(STDIN); close(STDOUT);
$| = 1;

が機能しない。
つまりhttpの切断が切れないのだ。最初のレスポンスメッセージも表示しない。
そもそも今Perlに手を出したのはそれが使えるためだ。

それはブラウザーでみれるようにヘッダーをつけたためかもしれないが
起動用での返り値がもらえないのでは意味が無い。

またブラウザのアイコンがまわりっぱなしでの待機なのだが
サーバーはちゃんと動作していて
エラーが起きるか終了するとブラウザも停止する。
つまり接続はキープされているらしい。

一方サーバー動作のほうだがやはり30分で切れるらしいので

  • shut downと入力すると終了

  • null入力でユーザー切断

  • ユーザーがログインした後ユーザーが0になったら終了


という形にした。
Flash側はサーバーの切断を検知できるので
そこから再度起動すればいい。
サーバーの主目的はリアルタイムの他者の動向であり接続プロセスは重要ではないのだ。
またたいていの場合ゲームの類でも
開始時に起動すれば30分間動いてくれれば成立する。

途中カウンタを入れてチェックしたところ
ループはサーバーソケットへのアクションがあったときだけまわっていて
常時ループではないことがわかったので
安心して使えそうだ。

30分制約は破れそうにないが再起動できれば充分なので
いまのこの「返りがない」という状況を打破したいが
これだとPHPでもよさそうだ。
レスポン自体Flashで受け取る形で再検討。

とりあえず最初の借り物コードと違い
消化して組みなおしたコードになっただけでもましではある。
回線切断しない理由はともかく起動時のメッセージがFlashで受け取れるかだけ確認したい。


posted by Xo_ox at 23:35| Comment(0) | サーバーサイド手習い | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。