CGI: Common Gateway Interface part 13
CGIの運用に関する質問スレッドです。
※ CGIはウェブサーバ上でユーザプログラムを動作させるための仕組みであり、
Perl等特定の言語に依存するものではありません。
Perlのコーディングに関する質問は、専用スレでお願いします:
Perlコーディング初心者質問スレ Part 43
http://pc8.2ch.net/test/read.cgi/php/1123777607/
CGIとPerlの区別がわからない、という人はとりあえずこちらへ:
△▲ WebProg 初心者の質問 Part12 ▼▽
http://pc8.2ch.net/test/read.cgi/php/1125215604/
過去ログ・関連スレッドは>>2-10あたりに よく、「当サイトを訪問されているは、現在28名です」というサイトを見るのですが、
これはどのようにして人数を数えているのでしょうか? >>33
適当に計算してるだけ
過去1分間のアクセス数とか >>31
参加して、sendmailでスパム送る方法を教えてもらってきてくれ。 perl oopで作成するCGIスクリプトの特長ってなんですか? perl oop でも、巧く構築すればかなりスリムで無駄のないものになるからいいよね >>3が関連スレの一覧じゃなくて誘導先になってるなw すんません。質問なんですが。
perlでau機に304 Not Modifiedを出力したいんですが、ブラウザがどうにも500エラーとかのたまいます。
出力している内容は、
Content-Type: text/html
Status: 304 Not Modified
(空行)
です。んで、FireFoxだと理解してキャッシュを表示してくれるのに、au機は500エラーというのです…もうわけわかめ。
間違っているんでしょうか?どういうヘッダーを吐き出せばいいんでしょうか… >>50
Openwaveの場合、同じURLをアクセスするとデフォルトでローカルキャッシュを読みにいくため
304 Not Modifiedの制御は意味を持たないのではないかと思う。
というか携帯のテストをFirefoxでやるというのが意味不明。普通はシミュレーターか実機を使ってやるだろ。
>>51
ありがとうございます。解決しました。
最後に空行を出すには\n\nを出さないといけなかったらすぃ…\n\nだと2行空行が入ると思ってたよorz
キャッシュに関しては、Cache-Control: no-cacheを吐いてるんで、OPENWAVEでもきっちり見に来てくれます。
FFでStatus: 304が正常に働いたのは、FFが良心的に解釈してくれたからの模様… perlで、サイト内検索スクリプトでand/or検索のプログラムを書きたいんですが
解説などのオススメのサイトとか知っている方いませんか? >>54
>>4のリンク先でも見て勉強するがよろし CGIの運用に関する質問スレッドです。
スレタイが紛らわしくてすんまそん。
>1を怨んでくり このスレの>>1は
自分が見やすいと思って書き直したコードが、
誰も読めないスパゲティにしてしまうタイプと見た。 何事にも来歴や理由がある
視力だけではコードは読めないよ part10から12の流れを知ってる奴はどれぐらい居るのやら。 Perl (mod_perl)
Perl (mod_perlなし)
PHP (mod_php)
C++
どれが一番CGIとして高速に動作しますか? mod_perlやmod_phpはもはやCGIではないのだが。
C++ (Apache モジュール)>C++(FastCGI)>>Perl (mod_perl)>PHP (mod_php)>>>>C++(CGI)>>Perl (CGI) C++ (Apache モジュール)とはmod_cgidsoモジュールですか?
workerでも動作するようで、使用してみたいですね >>63
Perl (mod_perl)>PHP (mod_php)
↑根拠ナシ夫ちゃん >>67
そんな恥ずかしいことを書けるあなたに感動した! スレタイ激しく元に戻したい。
改悪した香具師出て来い! CGIってウェブアプリケーションサーバって言って良い? FastCGI,SpeedyCGI,mod_perlの使用を検討しています。
Apacheに組み込もうと思っているのですが、どれが一番高速に動作するのでしょうか?(@Perl) ∧_∧
( ・∀・)
(( ( ヽ ノ )
ノ\(○´ ゴッ
(_ノ(_\ ∧
= ()二) < >_∧∩
V`Д´)/ ←>>78
/ まずルパンのタイトルフラッシュのような、
簡単な「文字入力→フォーム送信→受け取って出力」の流れを作れるようになることを目標に、
『基礎から学ぶCGIプログラミング』って本を買った
サッパリわからん
っていうか、書いてない
「perlでのプログラミングを経験したことがある人を対象にしています」ってそこが基礎じゃねぇのかよ
まず動作確認が動作しないんだよ
基礎以前の基礎はどこで実につけりゃいいんだよ
ローカルでCGI動かす方法書いてくれよ
Hello worldから説明してくれよ
オウム社ってなんだよくそ 挫折するぞ 1ページくらい見てから買おうよ(´・ω・`)
いい本探してるなら>>3の書籍スレで聞いてみるとか。 いやあ
40ページに書いてあるんだ
基礎以前の基礎って、他の「初心者のための」的な本には書いてあるんかなぁ
「この本よかったよー」って言ってる人が、元々どの程度の知識の持ち主かわからないし
まあこれは本屋行けって話ですよね
平然とCGIの話をするキミタチはすごい。うらやましい
一体何からどうやって始めたんだろう
まあすぐ追いつきますがね 今日覚えたこと・・・コマンドプロンプトは「cmd」で出す (´υ`)
この壁は高かった。HelloWorldできたわー
ただ どうやってブラウザで見るんだ?これ・・・
さあ、あんまりこんな低レベルな話されても迷惑だよな
独り言もこのあたりにしとくわ 超簡単な掲示板できたわ〜
日々成長しとるわ〜
あんな本いらんかった ── =≡∧_∧ =!!
── =≡( ・∀・) ≡ ガッ ∧_∧
─ =≡○_ ⊂)_=_ \ 从/-=≡ r( )
── =≡ > __ ノ ))< > -= 〉# つ
─ =≡ ( / ≡ /VV\-=≡⊂ 、>>87
── .=≡( ノ =≡ -= し'
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
|
|
| 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
| 東 京 湾 他のスレから来ました。
Perlで他のサイトを取得して表示したいと思っています。
(著作権侵害とかそういうことをしたいのではないです)
お時間のある方にお願いしますが、次のコードで@niftyのトップページを取得してみたら
どうなるか教えていただけませんでしょうか?
print "Content-Type: text/html\n";
print "\n";
use LWP::Simple;
print get( 'http://www.nifty.com/' );
私のところだと、ブラウザ上での表示がぐちゃぐちゃになるんですが…。 誘導していただいたのでこちらにて質問させてください。
HTTPレスポンスヘッダに206を指定しファイルをCGI経由でDL
させようとすると、500エラーが出てしまいます。
具体的には下記のようにしております。
print "HTTP/1.1 206 Partial Content\n";
print "Last-Modified: Wed, 24 May 2006 18:41:30 GMT\n";
print "Pragma: no-cache\n";
print "Accept-Ranges: bytes\n";
my $range = $ENV{'HTTP_RANGE'};
if($range =~ m/^bytes=(\d+)\-(\d+)$/){
my $offset = $1;
my $end = $2;
my $len = $end - $offset + 1;
print "Content-Range: bytes $offset-$end/$len\n";
$filesize = $len;
}
print "Content-Length: " . $filesize . "\n";
print "Content-Type: $content_type\n\n";
print while(<IMG>);
close(IMG);
エラー内容は「Bad header=HTTP/1.1 206 Partial Content」ですので
これを外せばエラーは出ないのですが、206を返す手段があれば
ご教示いただきたく思っております。 宜しくお願いいたします。 Status: 206
は?
詳しくはrfc3875を読むべし。 >>97
NPH (Non Parsed Header) 最近、ウェブ系の仕事を始めたものなのですが
CGIの負荷軽減テクニックみたいなのをまとめたページとか書籍などで
これぐらいは読んでおけ、とかいうのがあったら教えてください perlのコーディングスレが1000超えたまま次スレが見つかりませんでしたので
ちょっとこちらでお願いできませんでしょうか?
ダメでしたら誘導お願いします。
よければ回答お願いします。
perlの話です。
hoge.csvのファイルサイズが一定以下なら処理を中断してエラーメッセージを出したいのですが、
open FH,"hoge.csv";
print length <FH>;
これで一行目のはわかります。ループ処理すれば全行分もわかります。
でももっと一発でいける記述はないのでしょうか?
宜しくお願いします。 >>105
新スレ立ててそこで質問してくれ。
ちなみに、私は立てられなかった。 >>105
$size = (stat "hoge.csv")[7]; >>108
statなんていう関数があったんですね。
物凄いありがっとぐ。 http://xx.jp/xx.cgi
というURLで、
print "Content-Type text/xml;charset=UTF-8\n";
print "Content-Length: ", length($data) + $data =~ s/\n/\n/g ,"\n\n";
print $data;
と返すように出力させています。(言語はPerlです)
$dataは
"<data no='1' />"
のような簡単なXMLを記述しています。
これに、とある会社がプロキシサーバを通してアクセスすると、
502を返してエラーになるみたいなのです。
プロキシなしで直でアクセスすれば<data no='1' />と
見れるようです。
恐らく、ヘッダ情報が不正とかそんな理由で弾かれているのだと思うのですが、
なにが足りないのかわかりません。
Content-Typeをapplication/xmlにしても同様のエラーがでるようです。
その会社は、サイト製作したクライアントのお得意様で、
本来ならその会社の人と詳しく調べるべきなのでしょうが
自分とはほとんど面識の無いのです。
こちらとしてはできる限りのことをあらかじめしておくくらいしかなく
困った状態なのですが、そのプロキシサーバのログ等がわからない状態で
やれることはありませんでしょうか。
そのプロキシサーバの設定によっちゃどうやっても
無理な可能性もあるわけで、無茶な注文なんですが、
クライアントに作り手が悪いと思われているので
できる限りのことはしたいのです。
どなた様かお力を・・・
オラに力を print "Content-Type text/xml;charset=UTF-8\n";
は
print "Content-Type: text/xml;charset=UTF-8\n";
じゃなくて?
あと、ヘッダの改行は \n より \r\n の方が仕様に準拠しているそうですが...。
関係あるかな? そう言えば改行の個数をcontent-lengthに足してるのも怪しいな。
bimode STDOUT;して改行コードがいじられないようにするとか。 串通してる時点で、サポート外だって言えばいいだけなような。 スレ違いだったので移動してきました。
とあるアップローダーを無料サーバーで運営しています。
認証しないとダウンできないようにCGIを介してダウンロードさせる
仕組みなのですが無料サーバーゆえに30秒以上たつとプロセスが自動で
終わってしまうのです。低速の方が10MBのデータをダウンするのに
10分かかるとした場合に
CGIが出力したデータはサーバー側のバッファに溜まり普通に終了すると思ったのですが
どうなのでしょうか?
CGIはだだ ファイルを少し読み込んで出力のくりかえしです。
上に関連して
http://x-beat.com/spec.shtm
でアップローダーやってるのですが
■負荷対応
・実行時間が30秒を越えるタスク(通常は1秒以内)、CPU使用率が15%を越えるタスク(通常は0.5%以内)は、強制終了されます。
自分は低速なのでupするのに 3分かかるのですがアップロードできます。
データを送信してる最中はcgiは実行されてないのでしょうか?
ダウンに10分かかるならCGIはずっと実行中
アップローダーでCPU使用率15%超えるようなものは捨てたほうがいいよ
アップに3分かかるならその間はCGI実行される前だ
CGI実行の始めと終わりで時間差出せば簡単に確認できるやろ どうもです。確認してみます。
>アップローダーでCPU使用率15%超えるようなものは捨てたほうがいいよ
これは別の方法かもしくは低速は無視するということですか?
どうしても無視したくないならRangeヘッダに対応するとかすりゃいいんじゃないの? ま、それ以外だとデカいファイルだったら小分けにするとかいろいろあるやろ PerlでCGIを作成しています。
HTMLのformタグでaction="○○○.cgi?mode=○○○"とすると、CGI側が上手く値を取得出来ません。
これは仕様ですか? $ENV{QUERY_STRING}から取得できなければwwwサーバが環境変数を正しくセットできてないか
ブラウザのバグ STDINとQUERYで上手く棲み分け出来てないだけだと思う。
httpdやブラウザを疑うよりは128の頭を疑う方が適切。
自分の無知を棚に上げて「〜〜だけどバグか?」と言い出すタイプ。 はじめまして。
仲間内で使えるアップローダを作ろうと思っています。
大量のファイル(デジカメの画像)を一発アップロードすることはできませんか?
たとえば <INPUT TYPE="file" ・・・>
だと、1つずつファイルを選択しないといけませんのでちょっと手間がかかるので。 WebProg板の範囲で何とかするなら、1つずつ手間かけて
ファイルを選択してもらうしかないんじゃね?