• ベストアンサー

アクセス人数制限CGIについて。

アクセス人数制限CGIについて。 お世話になります。 特定ファイルに同時アクセスする人数を制限して、制限を越えたら 「しばらくお待ちください」みたいなメッセージを表示するCGI、 あるいは他の方法でもよいのですが、何か方法があるでしょうか。 理由は150Kbps約60分のストリーミングファイルを公開したいのですが、 レンタルサーバのデーター転送制限の関係で、2人までの同時アクセスは セーフで、3人になると転送制限を超えてしまいアウト。サーバ屋さんから 怒られてしまいます。 なんとかこのファイルを公開していので、皆さんのお知恵を拝借させて ください。

  • CGI
  • 回答数3
  • ありがとう数25

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

プログラム的には簡単とはいえ、 unixコマンドとかhttpの予備知識がないとキツいでしょうね・・ とりあえずperlのサンプルです。 ただ書いただけで、動作確認はしてません。 ------------------------ #!/usr/bin/perl my $fn='largefile.flv'; my @ps=`ps ax | grep $fn | grep -v 'grep'`; if(@ps>2){   print "Content-type: text/html\n\n";   print "<html><head></head><body>Overloaded.</body></html>\n";   exit; } print "Content-type: video/flv\n"; print "Content-Disposition: inline; filename="$fn"\n\n"; system("cat $fn"); exit; ------------------------- ・最初の'largefile.flv'は、公開したいストリーミングファイル名に変更して下さい。  ただし、ファイル名が日本語だと、保存しようとした時に化けます。  対応するとけっこうタイヘンなんです。詳しくは  http://cydn.cybozu.co.jp/office/2008/07/post_1.html ・Content-Typeをprintしている行のvideo/flvは、flv動画の場合です。  ストリーミングファイルの種類に応じて、変更する必要があります。  Content-Typeについては、  「動画 content-type」でぐぐってください。 ・psコマンドについては、  http://www.garunimo.com/program/linux/linux11.xhtml このCGIを<a>タグなり、flashプレイヤーの<object>タグなりの もともとのストリーミングファイルの代わりに指定します。 #前回の回答には「同じCGI名を数える」と書いてましたが、 #cat使ったのでファイル名を数えました。

okwavewan
質問者

お礼

サーバエラーの原因は、 ×print "Content-Disposition: inline; filename="$fn"\n\n"; ○print "Content-Disposition: inline; filename=$fn\n\n"; でした。 映像は、映像本体のasfと、そのメタファイルのasxになっていたので、実行ファイルはasx。プロセス用はasfと、切り分けて設定して、動作させることができました。 おかげさまで映像ファイルを公開できることができました。ありがとうございました。

okwavewan
質問者

補足

ご返事遅れました。 早速アドバイスのCGIを下記のように書き換えて試したところ、500番サーバエラーになってしまいました。レンタルサーバは「ステップサーバ」です。 映像ファイルの指定を.asxではなく、元の.asfにしてみたりと試したのですが、ダメでギブアップしました。再度アドバイスよろしくお願いいたします。 *** #!/usr/local/bin/perl my $fn='video_001.asx'; my @ps=`ps ax | grep $fn | grep -v 'grep'`; if(@ps>2){   print "Content-type: text/html\n\n";   print "<html><head></head><body>Overloaded.</body></html>\n";   exit; } print "Content-type: video/asx\n"; print "Content-Disposition: inline; filename="$fn"\n\n"; system("cat $fn"); exit; *** Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, info@stepserver.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log.

その他の回答 (2)

回答No.2

psコマンドで同名CGIのプロセス数を数える、くらいでよければ、 どこのレンタルサーバでもできそうだし、処理も簡単かと思います。

okwavewan
質問者

補足

netaninja さん お答えありがとうございます。 自分はプログラムを作ったことがなく、CGIは既存のものに多少表示などの変更をする程度の 知識しかありません。どこか、本件の参考になるサイトがありましたらご紹介してください。

  • YkazubonY
  • ベストアンサー率30% (26/86)
回答No.1

PHPのセマフォーを使うと、同時セマフォーゲットを指定でき、 それを越えた時点で、待ち状態にできるので、 望みの処理が可能になると思います。 要するに、ホームページをPHPで記述するということですね。

okwavewan
質問者

補足

YkazubonY さん ご返事ありがとうございます。 自分はプログラム製作の経験がなく、HPHは、既存のアクセス解析を設置した経験しかありません。 そのような訳で、本件で初心者にヒントになるサイトがありましたらご紹介ください。

関連するQ&A

  • CGIのアクセス制限について

    私は今自分でCGIを設置してショッピングカートを作っているのですが、これにアクセス制限をかけたいと思っています。 ちなみにサーバーはニフティなのですが、無料で使えるもので 初心者でも簡単に出来るものがあれば教えていただきたいと思います よろしくお願いします。

  • CGIのアクセス制限について

    環境は windowsXPHome SP3 / Apache2.2 / ActivePerl5 / (MySQLを使う予定) です。 htdocs\index.html htdocs\ddd\aaa.cgi htdocs\ddd\bbb.cgi のようなディレクトリ構成で、httpd.confは、htdocs以下を公開する設定になっていて <Directory "D:\Program Files\Apache Software Foundation\Apache2.2\htdocs\ddd"> AddHandler cgi-script .cgi Options +ExecCGI </Directory> を指定しました。 これを自宅サーバーとして公開する場合、外部からはindex.htmlにアクセスできるようにして、 aaa.cgiやbbb.cgiはindex.htmlからリンクやformのactionから呼び出されてからしか実行できない (直接cgiのurlを指定して開けない)ようにするにはどうすればいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • .htaccessでのアクセス制限<wakwak

    こんにちは。 wakwakでHPを作成しています。 実はトラブルがあり、アクセス制限をしたいのですが、 パスワードを入れるタイプではなく、 ある特定のIPの人だけを制限したいと思い、 .htaccessファイルの中に <Limit GET POST PUT> order allow,deny allow from all deny from xxx.xxx.xx. </Limit> (xxxはきちんと指定しています) と記述して転送しようとしたのですが Permission denied on server(Filename(deny)) と出て転送できません。 これはつまりwakwakでは拒否できないように してあるのでしょうか。 週明けにサーバー管理者に質問すればいいんですが できれば早いうちに制限をしたいと思っています。 (しかもそういう制限をしたことを知られたくないため レンタルアクセス制限などバナーが出るものは 避けたいと思っています) denyが使えないとしてCGIを使うタイプとか パスワードを指定しない形で 特定のIPをアクセス制限する方法はあるのでしょうか。 よろしくお願いします。

  • CGIでアクセス制限をしたい

    htmlタグはHPを3本立ち上げているので、 何とか30%ぐらいは理解したと思っていますが、 現在CGIを使ったアクセス制限を作りたいと悪戦苦闘しています。 参考書で紹介しているKENT WEBさんのアクセス制限{LOG IN} で始めたのですが、http://www.kent-web.com/  途中に# 認証ページからの戻り先 (index.htmlなど)と言う記述が あり、戻り先って何だと悩んでいます。  現在のアクセス制限はjavaでの制限を使っていますが、 index.html⇒password.html⇒main.htmlと進んでいくので、 $home "../main.html";と記入しましたが上手く行きません。 (../index.htmlも試しました)ffftpからのアスキー送信や パーミッションも間違いないと思いますが、 結果は「Forbidden 閲覧できません。」このページは、 ホームページ開設者が閲覧することを許可していないため、 ご覧になることができませんです。 長々と書きましたが当方はniftyのcgiです。 解決方法ご教授願います。

  • CGIへのアクセスが集中した場合にアクセスを一時的に制限したり、エラーメッセージを表示したり、予備のCGIに飛ばす方法。

    CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイトなどを目にしますが、どのようにして実現しているのでしょうか。例えば、flockなどの排他処理によって、一定時間内は1ユーザーからのアクセスしか受け付けないといった処理は可能かと思いますが、3ユーザーまでのアクセスのみ受け付けるといった方法はあるのでしょうか。 また、サーバダウンなどにより、CGIが動作しない場合に、エラーメッセージを表示したり、予備のCGIに飛ばす方法はありますでしょうか。 例えば、Aサーバのmain.cgiを動作させたい場合に、まずBサーバのpre.cgiにとばし、Bサーバのpre.cgiからAサーバのmain.cgiへのアクセスを試み、Aサーバがダウンしている為にアクセスに失敗した場合に、Bサーバ内のerroor.htmやsub.cgiに飛ばすことなどはできるのでしょうか。 できれば、CGI(perl)で実現したいのですが、有効な方法がございましたら、恐れ入りますが、教えていただけないでしょうか。もしも可能でしたら、簡単なサンプルのスクリプト等を添えていただけると大変助かります。何卒よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • アクセス人数を制限するための方法を知りたい

    アクセス人数を制限する方法を教えてください。 現在サイト制作中で、アクセス人数が多すぎて、パンク寸前です。 例えば100人まではアクセスを許可してそれ以上の人たちには特定のページを見せる(ただいま込み合っております。しばらくたってから再度アクセスをお願いします。)というような方法を教えてください。 現在サイトはPHPで作成中ですが、言語は問いません。 どうか宜しくお願いします!!!!

    • ベストアンサー
    • PHP
  • Windows2000のアクセス制限について

    windows2000professionalを使用してファイルサーバにしているのですが、どうもある人数以上がアクセスするとアクセスが出来なくなるようです。 アスセス制限などはかけておらず、無制限にしてあります。guestsユーザーで設定していますが、各ユーザーごとに登録すればこの現象は解決するのでしょうか? 又、windows98の共有の場合でもある人数以上はアクセスできなくなるのでしょうか?

  • イントラ内のWEBにアクセス制限はどのように???

    イントラ内で公開しているWEBページにアクセス権を付与して限定した人だけに公開は可能でしょうか? (ファイルサーバのような制限はつけれないですよね?) クライアントもサーバも同一ドメイン内という環境です。(全部Win系) そのクライアントでも限られた人のみに見せるページを作りたいと思うのですが、アクセス制限を掛けることは可能でしょうか?

    • ベストアンサー
    • HTML
  • basic認証で使ったIDをアクセス制限されているCGIに渡すことは可能ですか?

    アクセス制限されているCGIファイルにアクセスした後、認証の際に入力したIDを渡すということができればいいなと思っているのですが、可能なんでしょうか? ご存知のかた教えて下さい。よろしくお願いします。

  • ストリーミングサーバーでアクセス制限

    自宅サーバーを立てています。 そのサーバーにストリーミングサーバーを立ててメインPCのmp3を全部移し、メインPCだけで聞きたいのです。 しかし、ポート番号が分かってしまえばアクセスが可能になってしまいます。このままでは著作権違反になってしまうのでアクセス制限を掛けたいのですが何かいい方法はありませんか? あれば教えていただきたいです。 【     OS    】WinXP Home 【サーバーソフト   】04Webserver 【ストリーミングソフト】Streamsicle の構成です。