• ベストアンサー

一定時間経過した後に動作させる

cgiを表示させてから任意の一定時間が経過した後に、処理を実行させたいのですが、Perlでそのような事は可能でしょうか? 例えば以下のような感じです。 ページを表示させてから1分経過した後に if($xx =~ $zz){処理} を実行。

  • MKNET
  • お礼率94% (89/94)
  • Perl
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • calltella
  • ベストアンサー率49% (317/635)
回答No.1

1分程度でしたらforループさせるか Windows系サーバー以外でしたらアラーム動作させてみてはいかがでしょう。

参考URL:
http://www.futomi.com/lecture/signal/alrm.html
MKNET
質問者

お礼

有難うございます。urlもとても参考になりました。ですが私はwindows系サーバーも利用していますので、出来ればwindows系サーバーでも可能な方法があれば助かります。perlは勉強して間もないため、forループは使ったことがないのですが、ループさせている間はサーバー負荷がかからないでしょうか。出来れば少ないサーバー負荷で指定された時間、待機できる方法があれば、宜しくお願いいたします。

MKNET
質問者

補足

sleepを使って出来ました。因みに、これはサーバー負荷はあまりかからないのでしょうか?

その他の回答 (1)

  • calltella
  • ベストアンサー率49% (317/635)
回答No.2

forループだと負荷がかかりすぎですね。 sleepだと負荷はかかりません。

MKNET
質問者

お礼

大変勉強になりました。有難うございました。

関連するQ&A

  • 一定時間が経過したら処理を行う.

    一定時間が経過したら、ある処理を行いたいです。 if(一定時間が経過したら){  // 処理 } 例えばこのプログラムを実行してから1日たったら というようにしようと考えています. どのような条件をつければよいでしょうか?

  • 一定時間経過後にリンクがクリックされた場合にはエラーメッセージを表示したいのですが。

    (CGI(perl)が表示したページ内の)リンク部分が、もし30秒以内にクリックされたときにはリンク先のページが表示され、そうでないときには(それ以上経過してからクリックされたときには)エラーメッセージが表示されるようにしたいのですが、恐れ入りますがどなたか方法を教えていただけないでしょうか。なお、当方、CGI初心者ですので、スクリプトのサンプルなどのURLも(もしもご存知でしたら)あわせて教えていただけると非常に助かります。お手数ですが何卒よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • VB2005 でLOOP処理を一定時間経過したら抜けさせる方法

    VB2005の初心者です。 標準モジュールで、Loop処理で一定時間経過したらLoopを抜ける処理を作りたいのですが、どうすれば良いのでしょうか。 Formではないため、System.Windows.Forms.Timerは使えません。 標準モジュールなので、System.Timers.Timer を使うのかと思ったのですが、Intervalで設定した時間が経過したことをどのように知ることができるのでしょうか。 ソースは下記のような単純なループです LtimTimer = New Timers.Timer LtimTimer.Interval = 60000 LtimTimer.AutoReset = False LtimTimer.Enabled = True Do If '設定時間が経過' Then Exit Do End If 反復処理 Loop '設定時間が経過' 部分に、どのように書けば良いのでしょうか。 何かヒントになるようなことでも良いので、 皆様の知恵をお借りできれば幸いです。 よろしくお願い致します。

  • CGI動作後に元のページに戻る方法

    Perl , javascript 初心者です。 あるページの一番下に,チェックボックスを設置して選択してもらうという簡単なアンケートを作っています。 submit ボタンを押した後,CGI(Perl) で処理を行い,その後元のページの元いた場所(アンケートがあるところ)を表示させることはできますか? また,できれば submit ボタンの横に「ご協力ありがとうございました」というコメントを表示したいと思います。 良い方法があれば教えて下さい。

    • ベストアンサー
    • Perl
  • 一定時間毎に同じ動作を繰り返し行うには・・・

    色々試行錯誤していますが・・・うまく行きません・・・ どなたかお助けください!! PHP4.xx SQLite3.xxです。 初心者です。 DBに登録されているメールアドレスリストに10秒ごとにメールを送信するプログラムです。 メールリストは300人くらいですが、一気に送るのはサーバー的に負荷がかかると考え一人目にメールを送り、10秒経ったら次の人・・・また10秒経ったら次の人・・・に送信という形にしたいです。 最初はPHPのファイルでFORで回して処理の最後にsleep(10)で遅延させたらいけると(浅はかにも)思ってやってみましたが、ブラウザの表示でtimeoutするようでダメでした。 そこで今はjava scriptでリフレッシュさせてリフレッシュ先のURLの最後にfilename.php?id=●の数字の部分を順番に+1して行って終わったら処理終わるという手法を考えましたが・・・それがうまく行きません。 1人目の処理はうまく行ってメールも送信されますが次の人へ送信するURLへのリフレッシュがうまく行きません。 考え方がおかしいのでしょうか? それとも発想はいいけど、単にコードの問題なのでしょうか・・・? ちなみに処理する毎に毎回「●●さんにメールを送信しました」と表示されるようにしたいのです。(つまりbodyでリフレッシュかけると何も表示されずに次の処理に行くので見てる方は実際に送られているかどうか心配。わざわざ毎回にみんなに電話して「メール来た?」といか確認してられないですし・・・) 実際に作ってみたコードはこのような感じです。 -------------(ここから)---------------------------------- <? ■■ここにメール送信のコードがあります。これは実際に届いているのでOKです。 if (!$mail->send()){ echo("メールが送信できませんでした。エラー:".$mail->getErrorMessage()); } else { $message = "会員No:".$id." <b>".mb_convert_encoding($row["name"], "SJIS", "EUC-JP")."</b>様にメール配信しました。"; ■■↑毎回処理する毎に会員NOと名前+「送信しました」メッセージが表示されるようします。 sleep(5); $id++; //次の人に行くためにidを追加します。 } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ■■リフレッシュのjs部分 $idはDBから取得してます。GETがでid指定がない時は「1」が入るようになっていてそこからスタートします。 <SCRIPT language="JavaScript"> <!-- function refresh() { location.href = "haishin_send01.php?id=<?=$id?>"; setTimeout('refresh()', 5000); //5秒にリフレッシュする予定 } // --> </SCRIPT> <title>メルマガ配信テスト</title> <p> <?=$message?> </p> ■■ここで処理が終わって次のURLへリフレッシュする <SCRIPT language="JavaScript"> <!-- refresh(); // --> </SCRIPT> </body> </html>

    • ベストアンサー
    • PHP
  • CGIが上手く動作しません!

    大学のサーバーを使っているのですが、FTTPが使えなくなり、WinSCPでアップロードしているのですが、掲示板を設置しようとしてCGIを使おうとして CGI プログラムをスクリプトで組む場合には,以下のインタプリタを利用して下さい. /bin/sh /usr/bin/perl (version 5.6.0) もきちんと守ってやってみたのですが出来ません。どうすればいいのですか?何処に.cgiを置けばいいのですか? また、次の文の意味が分からないのですが、cgi-binというディレクトリを津kる必要があるのでしょうか?手順を教えてください。 CGI を ~/public_html/cgi-bin ディレクトリ以下に hogehoge.cgi, hogehoge.pl (hogehoge は任意の文字列)のいずれかの名前を付けて置く事によって,“.htaccess”ファイルを用意しなくても CGI を実行できます. (実行権限は必要です)

    • ベストアンサー
    • CGI
  • javaスクリプト 一定時間経過後 別ウィンドウで開くには

    javaスクリプト 一定時間経過後 別ウィンドウで開くには function OpenWnd() { wndow.open("sample.html"); } setTimeout("OpenWnd()" , 5000) ; javaど素人です。 上記のような感じでjsファイルを作成しましたが、 親ページ表示後5秒経過で"sample.html"を別窓で開きたいのですが、うまくいきません。 ご回答お願いいたします。

  • Windows7:一定時間経過するとフリーズします

    Windows7:一定時間が経過すると暗転してフリーズします。 何かご存知の方がいらっしゃいましたら教えて頂けると 助かります。 スペック 機種:DELL XPS-8300 OS:Windows7 HomePremium 64bit CPU:Corei7-2600 3.40GHz マザーボード:H67 メモリ:16GB グラフィックボード:RaedonHD5870 試してみた処置 PCのスリープ時間とディスプレイの電電offの時間の解除 GPUのドライバの更新 マザーボードのBIOSの更新 セキュリティーソフト(ノートン)のアンインストール 上記の処理を症状を確認しながら段階的に試してみましたが 全く同じ症状が起こり、改善されませんでした。 そこでPCのスリープ時間を極端に短く設定(1分)して みたところ普通にスリープ状態になり、解除の通常通りでした。 (現在、このスリープ状態で一定時間経過するとどういう状態に なるかテストを行っているとこです。)

  • 処理時間の計測中に、任意の時間が経過してしまったら、警告表示を行いたいですが、方法が分からないでいます

    C++で、 ある処理の実行に要する時間の計測を行う ソースを書いていたのですが、 時間の計測を開始してから、 3秒以上が経過してしまった場合にのみ、 処理の進行状況に関わらず、 「3秒経過済み」と表示してあげたいと思っていましたが、 時間の計測を、 「difftime」などで表示する方法は分かったものの、 処理の実行中に、3秒以上経過したら、 取り合えず、「3秒経過済み」と表示させる方法が 分からないでいます。 何かアドバイスいただけるとありがたいです。 宜しくお願い致します。 ====================== time_t start, end; time( &start ); //計測開始 //処理が実行される //処理時間の計測中に「最初の3秒が経過してしまった場合」にのみ「3秒経過済み」と表示してあげたい time( &end );//計測終了 ======================

  • C言語 一定時間計る

    C言語で、今クイズを作っています。 プレイヤーに考える時間を与え、その時間が経過したら自動的に不正解というようなソフトを作りたいです。 ただし、この場合一定時間、処理を停止させるのではなく、プレイヤーの入力を待ちながら処理を停止させ、一定時間終わると自動で次の処理(次の問題の表示)に移るようにしたいです。 サンプルソースなどもあればうれしいです。環境はBCCです。回答よろしくお願いします。

専門家に質問してみよう