• 締切済み

Sleep関数の最大時間について

ブラウザ上のinputタグ内で指定された日時に、サーバー上で処理を実行させるプログラム(Perl)ができないか考えています。 (1)最大指定時間 指定した日時と、入力した日時の差分をとり、ミリ秒に変換してsleep関数で処理しようとおもいつきました。この場合、設定可能な最大日数などがお分かりになる方はいらっしゃいますか? (2) (1)以外でいい方法はありますか?ちなみにサーバーはUNIXでサーバー設定の知識は0の初心者です。 どなたかお願いいたします。

  • cpmkb
  • お礼率50% (1/2)
  • Perl
  • 回答数2
  • ありがとう数1

みんなの回答

  • chie65535
  • ベストアンサー率43% (8514/19356)
回答No.2

>指定した日時と、入力した日時の差分をとり、ミリ秒に変換してsleep関数で処理しようとおもいつきました。 Perlのsleepは「秒単位」です。 「引数に浮動小数点を与えられるように関数をオーバーライド」しない限り「1秒単位」です。 >この場合、設定可能な最大日数などがお分かりになる方はいらっしゃいますか? 「与える引数がオーバーフローしない限り、どんな値でも指定可」です。 しかし、引数の有効範囲は「実装によって異なる」ので、ある値を超えると「無限に待つ」と言う状態になるでしょう(引数なしのsleepと同じ処理をされてしまうと思われる) >(2) (1)以外でいい方法はありますか?ちなみにサーバーはUNIXでサーバー設定の知識は0の初心者です。 「sleepで指定の時間まで待つ」ってのは「常識あるプログラマなら絶対にやらない」です。 普通は「スケジュールをキューに放り込む」って言う処理と「定期的にキューを監視して実行すべきスケジュールがあるか」って言う処理を走らせて「現在時刻がスケジュールに書かれた時間を過ぎていたら、スケジュールを実行済みとして消去しつつ、そのスケジュール通りのコマンドを実行する」って言う書き方をする。 なので「Perlからはスケジュールをキューに放り込む」って言う処理だけをする。そして「処理は即座に終わらせる」のが絶対条件。 下手にPrelの中でsleepなんかしようものなら、WEBデーモンがあっという間にリソースを使い潰して、システムダウンする。 処理が即座に終了しない場合、ブラウザで「F5連打」されると、連打した分のプロセスが生成されるから「暫くの間、ずっと処理が終わらない」なんてのが居た日には、F5キーを40連打くらい押せば、簡単にサーバーをダウンさせる事が出来ちゃうぞ。 だから「行ったら帰ってこない」って処理は、絶対にやっちゃ駄目。

cpmkb
質問者

お礼

書き込みありがとうございます。 F5連打でサーバーダウン・・・なるほど(笑)。ご指摘ありがとうございます。 >普通は「スケジュールをキューに放り込む」って言う処理と「定期的にキューを監視して実行すべきスケジュールがあるか」って言う処理を走らせて「現在時刻がスケジュールに書かれた時間を過ぎていたら、スケジュールを実行済みとして消去しつつ、そのスケジュール通りのコマンドを実行する」って言う書き方をする。 > >なので「Perlからはスケジュールをキューに放り込む」って言う処理だけをする。そして「処理は即座に終わらせる」のが絶対条件。 すごい!こんなことができるんですね。 上記の処理の流れで進めるために、初心者でもわかりやすいサンプルとかありますか?「スケジュールをキューに放り込む」で検索してみたのですが、皆目見当もつきません。。

  • cma3atgoo
  • ベストアンサー率35% (32/90)
回答No.1

cronを使う。 設定ファイルは単なるテキストだったと思うので、 WEBアプリから書き換えてやればスケジューリングできるかも?

関連するQ&A

  • スマホのスリープ状態で処理が止まる

    javascriptで作った長時間のループ処理をスマホのブラウザ上で実行していると、途中でスマホが無操作状態のためスリープ状態になります。するとループ処理がそこで停止してしまい、スリープを解除したときに再開されるようです。 そこで質問ですが、ループ処理中には(強制的にでも)スリープ状態にならないようにする何か良い方法はありますでしょうか? スマホの設定を変更するなどではなく、あくまでもjavascriptのプログラムだけで実現できないでしょうか。

  • 常に最大化

    検索とかかけてたくさん出てくるのですがいまいちピンとこないので 改めて質問させてください。 IE6.0を使用してIEの画面を常に最大化で表示したいのです。 Ctrl+×とかでなく、どんな状態でも開く画面は常に最大化で ひらいてもらいたいのですがその方法はないでしょうか。 開いたのを大きくするではなく開くとき強制的に最大化にするという事です。 フリーのFixIEというのは使ってみましたが、それでも ページ上の設定でこのサイズで表示しなさいというタグが打たれていると そちらに負けているようです。(xpだから?) 極端な話、ポップアップの小さいウインドウも強制的に最大化で表示したいのです。 タグでこのサイズで表示しなさい、というのを無視して常に強制的に 最大化で表示する方法、 もしくはフリーのソフトなどないでしょうか? ただしブラウザはIEで変えないものとさせてください。 このブラウザを…というのは今回はごめんなさいということでお願いいたします。

  • [CGI]ブラウザを閉じた時の動作

    PerlでCGIを作成中、ふと疑問に思ったことがあるので質問します。 例えばCGIで重い処理、またはsleep等の時間がかかる処理が走ったとします。 この際、処理中にブラウザを閉じる、または別のサイトに移動する等を行った場合、処理は中断されるのでしょうか?それともサーバサイドで最後まで実行されるのでしょうか? 基本的な質問かもしれませんが、よろしくお願いします。

  • Andoroidでスリープモードをオフにできない?

    見守りカメラとして、スリープモードを働かせないようにできるスマートフォンを購入したいのです。電話として使わないので古いスマートフォンでもよくて、安く購入したいのです。 Andoroidの設定の「開発者向けオプション」というのがあり、「充電中はスリープモードにしない」という設定をすると、充電状態にしておけばスリープモードにはならないことは確認できています。 http://loumo.jp/wp/archive/20150103000052/ 「充電中はスリープモードにしない」という設定は、Andoroid2、3、4でもできるのでしょうか? 今自分で実際につかっているAndoroidのバージョン5では、スリープモードになるまでの時間を設定ができますが最大30分までです。スリープモードをオフにすることはできません。これは以前のバージョンでも同様だったかと思います。 ちなみに、KeepScreen (now free)というアプリがあり、指定したアプリを起動したときは、スリープモードにしないためのアプリだそうですが、どうやっても一定時間がすぎるとスリープモードになってしまい、つかいものになりませんでした。

  • HTML テキストエリアの最大入力桁の指定法

    タイトルのとおりですが、調べても テキストエリアは行と幅の指定はできるのですが、 最大入力値の指定方法は書いていないのです。 テキストボックス <input type ="text" ~>なら、 maxlength属性を記述すればよいのはわかりました。 どのように<textarea>タグに記述すればよいのでしょうか?

  • スマホがすぐに暗くなります

    ドコモ so03dを使っています。 ブラウザを開くとすぐに暗くなってしまいます。 スリープは最長の30分で指定してもダメでしたし、 明るさ設定も最大になっています。 電池もしっかり充電されてるし、充電中でもだめ。 ブラウザを全部閉じたり再起動してもだめ。 ブラウザを立ち上げた最初は明るいのに、 操作中でも暗くなってしまいます。 どこの設定をいじればよいですか?

  • 日時範囲でグループ化された最大値

    任意の時刻にデータをモニタリングしているシステムがあり、データがMS SQL Serverに保存されています。 int ID int DeviceID 端末番号 int DeviceValue 計測値 smalldatetime DeviceTime 日時 これを、任意の日時範囲を指定し、一日単位で集計された、端末ID、計測値の最大値という形式で取得したく思います。 計測日 端末番号 計測最大値 2012/01/01 10002 34543 2012/01/01 10003 33211 2012/01/02 10002 23450 ... ... DBが得意でないため、困っています。 どなたかお助けいただけないでしょうか?

  • input TYPE="FILE"で取得した画像を表示

    お世話になります。 htmlのタグにinput type="file"というのがありローカルの画像を選択できるエクスプローラが起動するというボタンなのですが、それで選択した画像ファイルをサーバ処理を行うことなくブラウザに表示させたいのです、こんなことが可能なのでしょうか? なにかサンプル等ご存知の方宜しくお願いします。

    • ベストアンサー
    • HTML
  • リセットCSSはブラウザではどう処理されているのか

    まず、ユニバーサルセレクタによる方法では、対象のWebサイトで使われいるタグ以外、全て(ブラウザに登録されてあるタグ?)もブラウザで処理されるのでしょうか? 例えば、そのWebサイトでh1、h2が使われていたとしたら、使われていないh3やh4などのマージン・パディングも0になるようにブラウザ内で処理されているのでしょうか? また、ユニバーサルセレクタではなく以下のように指定してある場合は、ブラウザはここに記述してあるタグだけをマージン・パディングを0にするのでしょうか? body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6, pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{ margin:0;padding:0; } その他のブラウザに登録されてるタグは処理されない、ノータッチということですかね。

    • ベストアンサー
    • CSS
  • ページングファイルの最大値の指定について

    Windows XP Professional を使っています。 ページングファイルのサイズ指定をカスタムにして初期サイズ、最大サイズを 指定しました。最大サイズは推奨サイズより小さい値です。 その後、重い処理を実行したところ、実行中にページングファイルが最大サイズ 近くまで行ったり、また少し小さくなるのを確認しました。 さらに再起動したところ、ページングファイルのサイズが指定した最大サイズを 超え、推奨サイズ+1MBの大きさにまでなってしまいました。 最大サイズを超えないものという認識でいたのですが、間違えていますでしょうか? また、あるサイズを超えないようにするにはどのような設定が必要でしょうか?

専門家に質問してみよう