• 締切済み

at コマンドで同時刻に登録されたプロセスの実行について

このカテで良いのか迷いましたが質問させていただきます。 タイマー設定でメールを送信したいと思っています。 Webアプリケーション(Apache+PHP)で利用者が時刻を指定して 登録をすると、指定した時刻にメールが送信される仕組みです。 そこで、登録が発生したタイミングで at コマンド(シェル)を 発行し、atキューに溜める方式を取ろうと考えています。 仮に、同一時刻に数千件のat コマンドが登録された場合、 - それらのコマンドは同時に実行されるのでしょうか? - それとも登録された順等にシーケンシャルに実行されるのでしょうか? 前者の場合、数千件のプロセスが一時に同時に起動してしまう 自体は避けたいと思うので他の策を練ろうと思います。 ちなみにMTAはqmailです。 また、Webアプリケーションからの登録でタイマーメール送信をする際の at 登録以外の方式がありましたらご教授ください。 よろしくお願いします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.1

「シーケンシャルに」という意味が、1つのコマンドの実行完了を待って次のコマンドを実行するという意味なら、違います。 厳密な順序はわかりませんが、同時刻に登録されたコマンドなら、並行して実行されます。 データベースに登録などして、crontabジョブでデータベース検索して送るんでしょうかね。

kiposari
質問者

お礼

ご回答ありがとうございます。

関連するQ&A

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

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

    • ベストアンサー
    • PHP
  • コマンドプロンプトのatコマンド

    コマンドプロンプトのatコマンドを使って、指定時刻にテキストファイルを表示するようにしたいのですが・・・。 at 22:50 /interactive /every:M,T,W,Th,F,S,Su "C:\Users\○○\test.txt" と、このように入力しても、指定時刻にテキストファイルが表示されません。 これは、何がいけないんでしょうか?

  • atコマンド

    atコマンドで日時指定をして、echo helloというコマンドを実行させました。一応atqでジョブが予約されているかも調べました。しかし、時間になってもコンソールにはhelloと表示されず、atqでジョブを見ると終了しています。どのようにすれば、コンソールに文字列を出力することができますでしょうか? ご存知の方よろしくお願いします。

  • ATコマンドでバッチを実行するとエラーになります。

    よろしくお願いします。 WindowsXP(SP1)、Windows2000(SP4)、Windows2003 ServerからLinuxサーバの共有領域に 接続する為にバッチファイル(AAA.bat)を作成しました。 AAA.batを実行したところ、Linuxサーバに接続する事が確認出来たので、 次にATコマンドでAAA.batを実行したところ下記のメッセージが 表示されました。 「システム エラー 1312が発生しました。  指定されたログオン セッションは存在しません。そのセッションは既に終了している可  能性があります。」 ATコマンドからAAA.bat(共有領域の接続)を実行する場合に、何か注意点がありましたら御教授お願いします。 また、ATコマンドで他のBATファイルを実行したところ正常に動作したので、スケジュールのサービス等には問題なさ そうです。 AAA.bat net use * \\***.***.***.***\coo\log syspass /user:system ※「***.***.***.***」の部分はIPアドレスです。 ATコマンド at 20:12 /interactive c:\test\AAA.bat

  • atコマンドによるスケジュールの登録の仕方

    はじめまして。 Windowsの"at"コマンドを使用してスケジュールの登録をしようと 思うのですが上手く作動しません。何がおかしいのか教えてください。 以下コマンド at 22:57 /INTERACTIVE start C:\WINDOWS\notepad.exe ちなみに管理者ユーザですしTask Schedularのサービスも起動しています。OSはWindows XPです。 イベントログを確認すると指定されたファイルが見つかりませんという エラーが出ています。 何が原因なのかよろしくお願いします。

  • Vistaで、atコマンドが使えません。

    こんにちは。 Vistaで、atコマンドを使った、タスクスケジューリングができずに困っています。 例えば、管理者としてコマンドプロンプトを立ち上げ、 at 17:00 1.bat というコマンドを実行すると、 「新しいジョブをジョブ ID = 1 で追加しました。」 と表示されます。 その後、タスクスケジューラの「タスクスケジューラ ライブラリ」を見ると、 先程のジョブが、AT1という名前で、きちんと設定されています。 にもかかわらず、していした17:00になっても、1.batは実行されません。 1.batを、dirのような組み込みコマンドに変えても、実行されませんでした。 タスクスケジューリングに必要なサービスは全て起動しています。 具体的には、 DCOM Server Process Launcher Remote Procedure Call (RPC) Remote Procedure Call (RPC) Locator COM+ Event System System Service Notification Service COM+ System Application を、全て起動しています。 また、タスクスケジューラでのスケジューリングは、上手くいっています。 どうすれば、atコマンドを使う事ができるのでしょうか? 何か御存じの方がいらっしゃれば、是非、情報を提供して頂きたく思います。 では、よろしくお願い致します。

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

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

  • DOS、ATコマンドでの不具合

    atコマンドを使用し、ネットワーク上にあるIISのログを自分のパソコンへ取りこむbatファイルを作成しました。net useでデバイスを指定し、IISサーバーの入っているホストへアタッチし、copyコマンドでログを取りこんでいます。atコマンドを一分後などに設定し、実行すると成功するのですが、翌日にスケジュールしたりすると、実行されていません。どなたかDOSコマンドに詳しい方、思い当たるふしがあればぜひ教えて下さい。また、他にもっと確実な方法等ありましたら、どうぞ知恵をお貸し下さい。よろしくお願いします。

  • PC画面の変化を検知してメール送信やコマンドの実行ができる方法、

    PC画面の変化を検知してメール送信やコマンドの実行ができる方法、 ご存知の方いらっしゃいますでしょうか? Webカメラで動体検知してメール送信、というのは多数ありますが、 カメラを使わずソフトのみで画面変化を検知し、メール送信や アプリケーションを起動させる、などが可能な方法なのですが。 いくつかのものを組み合わせて、などでも構いませんので、 何か情報お持ちでしたら、よろしくお願いします。

  • ATコマンドのスケジュールについて

    いつもお世話になっています。 NT4.0の開発でタスクスケジューラーではなく、 ATコマンドによるスケジュール登録で、ATコマンドから実行した場合プログラムが正常に動いてくれません。 スケジュールは、以下のとおりに設定しました。 例) AT 20:00 "C:\TEST\BIN\0001.EXE" (ネットワーク経由でコピーを行うPG) 該当時間になると"C:\TEST\BIN\0001.EXE"は起動しますが プログラムとしての仕様は失敗に終わります。 プログラムソース内にネットワークに接続し、コピーをする処理があるのですが、原因はそれなのでしょうか? 何しろATコマンドは初めてで混乱しています。 過去のOKWEBなども検索しているのですが理解に苦しみます。 補足は随時書き込みますので、どうぞよろしくお願いいたします。