- PR -

CGIのアップローダー開発

1
投稿者投稿内容
KAR
会議室デビュー日: 2007/02/19
投稿数: 11
投稿日時: 2007-04-12 12:29
いつもプログラムにて困った時には大変お世話になっております。
まだまだ勉強不足のWEBプログラマですが
下記の内容に関して少々手こずっております。
宜しければ、皆様のお力をお貸し頂きますようお願い致します。

現在、CGIにて動くアップローダーを作成しているのですが
ファイル容量が軽い場合には問題なく処理できるのですが
大容量になると「DNSエラー」が発生し、途中で終了してしまい困っております。
(サーバー側でタイムアウトする)

*********************
if(open(OUT,">$UP_FLD/$ITFILE")){
binmode(OUT);
binmode($fname);
while($rsize = read($fname, $buffer, 1024)){
$fsize=$fsize+$rsize;
print OUT $buffer;
}
close OUT;
}
*********************
自分なりにネットにて検索した所、alarm関数を使っての方法などは見つかったのですが
残念ながらサーバーにて導入しているのは「ActivPerl」の為、使用することができません。
なにかタイムアウトしない良い方法はございませんでしょうか。

自分なりに検討している対処法としましては
「サーバーのタイムアウト時間を延長する」を検討しておりますが
この場合、別の形での不正行為に関わるのではないかと勘繰っております。

どうか皆様のお力をお貸し頂きますようお願い致します。 
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2007-04-12 12:50
Perlは分からないから読み違いしてるかもしれませんが。

とりあえず、処理に時間がかかってエラーが起きているのか、アップロード自体が出来ていないのか切り分けてみるといいと思いますよ。
(例えば、とりあえず何もしないで、アップロードされたファイル名だけ表示するプログラムを走らせてみるとか。)

で、アップロード自体が出来ていない場合は、プログラムではどうしようもなくてサーバの設定の問題になると思います。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2007-04-12 13:47
ちなみにASP.NETのファイルアップロードでDNSエラーが発生する場合は
タイムアウトではなく、サーバー設定であるアップロードできる最大サイズを超えた場合です。
ActivPerlでどうやって設定するかは知りませんが。。。
KAR
会議室デビュー日: 2007/02/19
投稿数: 11
投稿日時: 2007-04-12 14:28
>冬寂様、burton999様
ご教授頂きましてありがとうございます。
CGIについては場違いでしたでしょうか。
CGIやPerl関連をどこに質問すれば良いのかわからなかった為
スレッドを汚してしまい申し訳ございませんでした。
1

スキルアップ/キャリアアップ(JOB@IT)