このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

CGIから他のループ処理中のCGIへのデータをわたすには?

発言者:hightide
( Date Thursday, July 09, 1998 03:19:27 )


すいません。マックではなくてApache+Perlでサーバープッシュ機能を利
用したチャットCGIを作ろうとしています。multipart/mixedを出力して
すでに送り出したデータの後ろに付け足すように送り出す部分はなんと
か作れたのですが、・・・

フレームの下部のCGIでフォームからデータを受け取ってファイルへ記録し、
フレーム上部のCGIでファイルを繰り返し読み込みにいって新しい発言が増
えていれば送信するといった仕組みにしています。

できれば、この処理をディスクではなくてメモリ上で行うなり、直接データ
をフレームの下部のCGI→フレーム上部のCGIへ渡すなりしてもっとサーバー
に、負担がかからないようにしたいのですが、どうやればできるのかがわか
らず途方に暮れています。どなたかアドバイス御願いします。

→  Server Push機能を利用したチャットの試作

hightide さんからのコメント
( Thursday, July 09, 1998 03:20:50 )

すいません。タイトルを打ち間違ってしまいました。
「CGIから他のループ処理中のCGIへデータをわたすには?」の間違いです。

田中求之 さんからのコメント
( Friday, July 10, 1998 00:59:03 )

Perl の CGI って、複数のプログラムの間でグローバル変数を共有することができない
んでしたっけ? AppleScript なら、グローバル変数かプロパティにバッファー領域を
確保してそこを経由してデータを受け渡しするのが簡単な方法だと思いますが。

hightide さんからのコメント
( Friday, July 10, 1998 01:39:55 )

アドバイスありがとうございます。

Larry Wall and Randal L. Schwartzの「Perlプログラミング」の
3.1.2変数(P.86)に

「ブロック内でlocal()関数によって局所化されたものを除いて、変数は
ずべてグローバルである。(実際には、変数はそれが使われているパッ
ケージに局所化されているので本当にグローバルなわけではない。しかし、
C言語の static 変数のようにこれらの変数は特定のパッケージに関して
はグローバルであるように見える。・・・)」

と、あるのでAppleScriptやHyperTalkのようにグローバル変数で共有する
のは無理だと思います。