- - PR -
POSTデータが全て受け取れない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-11-27 14:37
おつかれさまです。
今 開発しているシステム(Linux+Perl)で困った事が起きています。どなたか、同じような経験をした方はいませんか? 普通、Perl で作られた CGI がPOST データを受け取る場合、 $len = read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); のようにコーディングしていると思いますが、ある特定の お客様のところで たまに 読み込まれたデータの長さ $len が $ENV{'CONTENT_LENGTH'} に較べ小さいのです。 apache の access_log を見たところ、この時に POST されたデータ長 は $ENV{'CONTENT_LENGTH'} + α なので、apache まではデータが来ているようです。 apache のソースを見てみると apache と CGI は pipe で通信しているようですが、pipe からの read は リクエストした長さ分を受信する前に戻る事があるのでしょうか?? (socket からの read では ありますよね) だとすると、 上のよなコーディングでは まずい気もしますが、CGI.pm 等の実績がありそうなモジュールでも そうなっていました。 また perl のソースをざっと見たかんじでは perl の read 関数は unix の fread() を そのまま呼び出しています。。。 ![]() 環境は Linux : RedHat 7.2 (2.4.7-10) Apache : 1.3.20 Perl : v5.6.0 宜しくお願います _________________ ユゥミ ♪♪ |
1