• ベストアンサー

箱庭の定時処理

インターネット上のシュミレーションゲーム「箱庭」などで、ある時間になると処理が走るような機能は、どのように実現しているのでしょうか? 箱庭では、ある時間になると指定した作業(埋め立て、資金繰りなど)が実行されます。WEBアプリケーションなので、だれかがページにアクセスしないと処理は走らないと思うのですが。

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

  • ベストアンサー
  • acacia7
  • ベストアンサー率26% (381/1447)
回答No.4

CGIの基本は、サーバーのプログラムの起動とブラウザーへの出力だけだと思います。 ブラウザーのクローズを読みとって、プログラムの停止をかけるなら別ですが、なにもしなければ、ブラウザーと関係のない処理は動くのでは?・・ かなり曖昧で、申し訳ないですが・・(^^;

redcoffe1020
質問者

お礼

大変お恥ずかしいです。おっしゃるとおりでした。 先入観で思い込んでいただけのようです。助かりました。

その他の回答 (3)

  • acacia7
  • ベストアンサー率26% (381/1447)
回答No.3

cgiの呼び出しがトリガーになって実行処理が呼び出されるだけで、 更新の完了とユーザーのウインドウ終了は無関係では?・・ ユーザーのポストなどの作業が別途必要なプロセスなどは、 定時処理とは別のステップにし、定時処理の終了を確認して移行すれば良いだけです。

redcoffe1020
質問者

補足

ご返事ありがとうございます。 当方ではASPとACCESSを使用していますが、ク エリーやコードを順に実行している時にユーザがブラウ ザを閉じると、現在実行中のクエリーは完了するのです が、それ以降のコードに記述したクエリーは実行されま せん。CGIと仕組みが異なるのでしょうか?

  • Nubatama
  • ベストアンサー率50% (2/4)
回答No.2

質問に対する回答ではないのですが、 「箱庭諸島」は、かならず「指定した時間」に処理が行われているわけではありません。(すくなくとも「箱庭諸島2」「箱庭諸島R.A.」はそうです。) あれもやはり、だれかがcgiにアクセスしたときにターン更新の処理が動いています。

  • acacia7
  • ベストアンサー率26% (381/1447)
回答No.1

定刻経過後の最初のプロセスにその処理をさせればいいだけでは? 最初に時刻と定刻処理の状況を確認して、 未処理の場合は、処理してその後のステップへ。 処理してある場合は処理をスキップして次ぎへ。 でいかが?

redcoffe1020
質問者

補足

ご回答ありがとうございます。おっしゃるように、最初のプロセスに更新処理が走るのなら、その更新処理実行中にユーザがWindouwを閉じた場合、当然更新処理は途中のままということになりますが、その際の対策は行っているかわかりますか?よろしくお願いいたします。

関連するQ&A

  • リモートログインをしていろいろな処理をさせたい

    こんばんは、皆さん。 リモートデスクトップでサーバにログインをして、Officeなどのアプリケーションソフトを実行するという作業を自動化しようと考えています。 Windows Scripting Hostを使ってその処理をプログラムしようとしています。 プログラム内にあらかじめ接続先IPとログインID/パスワードを書いておき、アイコンをダブルクリックで実行するだけで接続してアプリケーションを実行させて目的の処理をさせたいです。 これを実現するにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • vbで指定時刻に処理を実行する事はできますか?

    vbで指定時刻に処理を実行する事はできますか? 経過時間後に処理を実行する事はTimerでできます。 それと同じような感じで、指定した時刻になったら処理を実行したいです。 アプリケーションそのものを指定した時刻に実行するならタスクスケジューラでやればよいでしょうが、 例えば、朝6時になったら背景を昼間の画像に、18時になったら夜の背景に変えるといった事はできるでしょうか? vb.net 2015 Visual Basic Windows Application

  • 24時間後に処理

    とあるサイトで、24時間後に処理を実行できるプログラムは実現可能でしょうか? 24時間なので当然ブラウザを開いた状態ではなく、閉じても24時間後に処理が実行される仕組みはないでしょうか。

  • 指定時刻のプログラム実行

    FreeBSD+PHP+MySQLでWEBアプリケーションの開発をしています。 よくシステムの中で ・指定時刻になったら会員にメールを送信 ・ユーザがフォームから入力した時間にメール送信 ・ユーザが掲示板に書き込んだ15分後にメールが送られる。 といった、指定時間に処理を実行したいことが多くあります。 この場合どう実現したらよいか迷っています。 現在cronを5分おきに実行させ、指定時刻を過ぎた処理がDBに無いかチェック、あれば実行してDBから削除。 といった方法をとっています。 しかし本当にこんなやり方でよいのか疑問です。 大規模なサイトではまさかこんなやりかたをしていないのでは? 正確な時間に実行はできないですし、cronの間隔を短くすればDBへの負荷が気になります。 何か方法があれば教えてください。

    • ベストアンサー
    • PHP
  • VB2010 で指定時間にプロシジャ起動するには?

    検索の仕方なのか、判らないので教えてください。 ExcelのVBAではApplication.OnTime メソッドがあり、 Application.OnTime TimeValue("17:00:00"), "test01" とすれば、17時ちょうどにtest01というプロシージャが実行されます。 フォームを作って Application.OnTime UserForm1.TextBox1.Value, "test01" のようにすれば、TextBox1に時間指定して、その指定時間にtest01を起動する事も可能で、業務用アプリとして実際に使用しています。 では、これをVisual Basic 2010で同じように実行するにはどうしたら可能でしょうか? googleで調べても、時計のように、一定時間(1秒ごと)にラベルの内容を書き換え表示するようなサンプルは見つかるのですが、指定時間に、指定の処理を実行する というようなサンプルは見つかりませんでした。 指定時間にFTPにファイルをアップしたり、指定時間にWEBブラウザからHTMLを取得したりと、いろいろ使い道があって結構つかっていますので、この「指定した時間に、処理○○を記述したプロシージャーを実行して」という処理ができないとかなり困ります。

  • 携帯電話で、自動でWEBページへアクセス

    ASPアプリケーションでメール一斉送信を作成しました。このプログラムを一定期間ごとに実行したいのですが、当然WEBページにアクセスしないと実行されません。そこで、iアプリで、時間を指定して自動アクセスするソフトがないかを教えてください。

  • Java ひとつの処理しか実行させない

    こんにちは! Javaの初心者です。現在、Webアプリケーションの開発をしています。 大量のデータを扱うため、この処理の部分だけ終わるまで他の人は同じ処理を実行できないようにする、ということをやりたいのですが、どういう手法がありますか?

    • ベストアンサー
    • Java
  • Webで重い処理をするとリクエストが10回飛ぶ

    PHPでフレームワークのCAKEを使ってWebシステムを作っているのですが、どうしてもわからない点があるので、ご教授頂きたく質問させていただきました。 現在Webサーバ2台とDBサーバ1台であるサービスを運営しています。 Webサーバはロードバランサで負荷分散をしています。 画面上でどうしても重たい処理をする必要があり、実行しているのですが、リクエストが10回飛びデータが10個登録されるという不思議な現象が起こっており対応に困っています。 開発用にWebとDBが一緒の開発用サーバもあります。やったことは 1.開発用のサーバで同じデータ、同じ処理を実行 リクエストは1回でデータも1個登録 apacheのアクセルログにも1回アクセスされている 2.運営用のサーバで同じ処理だが、データ量を減らして実行 リクエストは1回でデータも1個登録 apacheのアクセルログにも1回アクセスされている 3.運営用のサーバで同じデータ、同じ処理をIPアドレスを指定して実行 リクエストは1回でデータも1個登録 apacheのアクセルログにも1回アクセスされている 4.運営用のサーバで同じデータ、同じ処理を実行 リクエストは10回でデータも10個登録 apacheのアクセルログにも10回アクセスされている 以上の結果からロードバランサで何かしらのことがされているのかと思い、サーバ会社に問い合わせてみたのですが、「そんなことはない」との回答でした。 他に何をどう調べたらいいのかもわからず、かなり手詰まりなかんじです。 手がかり、確認内容などなんでもいいので、ご教授頂けないでしょうか。 よろしくお願いします。

  • タスク起動時にログイン処理を行いたい

    環境:Windows10 Pro 20H2 BIOSパスワード有り 現在、Webアプリの画面テストのための画面自動実行処理を 夜にタスク起動させようとしています。 行いたいタスク処理は ①指定時間になったらログオン ②画面テストの事項実行処理開始 ③ログオフ です。ネットで調べましたが上記①の処理が実装できずに困っています。BIOSのパスワードがかかっているため、再起動してパスワードなしのAutologinもうまく動きません。 タスクで指定時間にログオンする処理はどのようにしたらよいでしょうか?

  • 処理が終わったり終わらなかったり。

    処理が終わったり終わらなかったり。 SQLServerの統計情報や実行計画に関してその挙動の 理解に苦しんでいます。 もし解決のヒントがいただけたらと思い、質問しました。 よろしくお願いします。 使用しているOSはWindows2008Server x64です。 DBはSQLServer2008 EEを用いています。 サーバー機はXeon 2.93MHz QuadCore×2です。 メモリは32GBで、うち20GBをSQLServerに使用させています。 javaのアプリケーション内でJDBCでDBアクセスしています。 処理は (1)3000万件程度のデータをメモリ上へ (2)計算処理してファイルへ (3)ファイルをDBへBulkInsert というもので、Javaのほうで8並列処理を行わせています。 この処理がどういうわけか(1)のところで動いたりとまったりします。 (止まっているというよりは、極端に遅くなっているというのが 正確かもしれません。) 経験則としては ・大量データを流す前に少量データで疎通を取った場合にとまる。 ・大量データ→大量データではとまらない。 ・止まったあと、一度スレッドをとめて統計情報を更新後、再度処理を流すと止まらない というようなものがあります。 利用状況モニタを見ると、 I/O Completion というものが非常に長い時間処理しており、 なぜ状況によってこの処理時間が延びるのかがわかりません。 また、統計情報を更新したといっても、実行計画が殆ど変わらない場合もあります。 ただ、実行計画が殆ど変わらない(xmlにしてDIFFを取ると1行しか変わらない。)場合も、 再実行すると正常時間で処理が終了します。 何かお気づきの点がありましたら、是非ご教授ください。

専門家に質問してみよう