[PHP-users 15078]Re: 指定した時間にメールを送るには
shin ohira
shin @ ohira.com
2003年 5月 7日 (水) 11:58:19 JST
はじめまして
at というコマンドを使ってはどうでしょうか?
マニュアルこぴぺしておきます。
AT(1) FreeBSD General Commands Manual AT(1)
名称
at, batch, atq, atrm - あとでジョブを実行させるためのキューの設定、確認、
ジョブの削除を行なう
書式
at [-V] [-q queue] [-f file] [-mldbv] time
at [-V] -c job [job ...]
atq [-V] [-q queue] [-v]
atrm [-V] job [job ...]
batch [-V] [-q queue] [-f file] [-mv] [time]
解説
at と batch は、標準入力もしくは指定したファイルからコマンドを読み込み、
あとで sh(1) を使って実行します。
at コマンドを、引数で指定した時間に実行します。
atq ユーザの、実行待ち状態のジョブのリストを表示します。スーパユーザ
が実行した場合は全員のジョブが表示されます。
atrm 指定したジョブを削除します。
batch ロードアベレージが特定の値以下になったときにジョブを実行します。
この値は、デフォルトでは 1.5 です。この値は atrun によって指定可
能です。
at では、様々な形式の時間を time として受け付けます。時刻は HHMM もしくは
HH:MM の形で指定します (もしこの時刻が過ぎていた場合は、次の日のその時刻
に設定されます)。また、 midnight, noon, teatime (4pm) のキーワードも受け
付けますし、時刻の後ろに AM もしくは PM をつけた時間も受け付けます。日付
は、 month-name day およびオプションの year の形で受け付けます。
DD.MM.YYYY, DD.MM.YY, MM/DD/YYYY, MM/DD/YY, MMDDYYYY, MMDDYY も受け付けま
す。日付の指定は時刻の指定の後に記述します。 [now] + count time-units の
ような形式で時間を指定することも可能です。time-units は時間の単位で、
minutes, hours, days, weeks のいずれかです。時間のサフィックスの today は
ジョブを今日に設定すること、 tomorrow はジョブを明日に設定することを意味
します。
例えば、今から 3 日後の午後 4 時にジョブを走らせるためには at 4PM + 3
days とします。7 月 31 日の午前 10 時の場合は at 10am Jul 31 とします。明
日の午前 1 時は at 1am tomorrow です。
at と batch はどちらも、標準入力または -f オプションで指定したファイルか
らコマンドを読み込み、実行します。ワーキングディレクトリと環境変数 (
TERM, TERMCAP, DISPLAY および は除く)、umask は実行時のものが保持されま
す。 at もしくは batch が su(1) で起動されたシェルから実行された場合は、
カレントの userid を保持します。出力結果が得られた場合は、その標準出力と
標準エラー出力がメールで送られます。メールは sendmail(8) を使って送られま
す。もし at が su(1) で起動されたシェルから実行された場合は、そのログイン
シェルの所有者がメールを受けることになります。
スーパユーザはどんな場合でもこれらのコマンドを実行できます。その他のユー
ザは /var/at/at.allow と /var/at/at.deny のファイルによって at を実行でき
るか決められます。
もし /var/at/at.allow が存在するならば、その中にユーザ名を記述されたユー
ザだけが at の実行を許可されます。
もし /var/at/at.allow が存在しなければ、 /var/at/at.deny がチェックされ、
その中にユーザ名が記述されていないすべてのユーザが at の実行を許可されま
す。
もし両方ともなければ、スーパーユーザだけが at を実行できます。これがデ
フォルトの設定です。
空の /var/at/at.deny は全てのユーザがこれらのコマンドを使用できることを意
味します。
オプション
-V 標準エラー出力にバージョン番号を出力します。
-q queue
指定したキューを用います。キューの名称は単一の文字からなります。
有効なキューの名前は a から z と A から Z です。 at のデフォルト
のキューは c で、 batch のデフォルトのキューは E です。キューの文
字が後の方であればあるほど nice 値が上がります。もし大文字のキュ
ーがジョブに対して指定されたならば、時間を指定して batch が実行さ
れたものとして扱われます。もし atq でキューが指定されたときは、そ
のキューだけの実行待ちのジョブを表示します。
-m 出力がなかった場合でも、ジョブの完了時にメールをユーザに送りま
す。
-f file
標準入力のかわりにファイルからジョブを読み込みます。
-l atq のエイリアス。
-d atrm のエイリアス。
-b batch のエイリアス。
-v atq の場合は、キューの中の実行されたがまだ削除されていないジョブ
を表示します。さもなければジョブが実行される時間を表示します。
-c コマンドラインにリストされたジョブを標準出力に出力します。
関連ファイル
/var/at/jobs ジョブファイルを保管しておくディレクトリ
/var/at/spool 出力ファイルを保管しておくディレクトリ
/var/run/utmp ログインレコード
/var/at/at.allow 許可属性の設定
/var/at/at.deny 不許可属性の設定
/var/at/jobs/.lockfile ジョブ作成のロックファイル
関連項目
nice(1), sh(1), umask(2), atrun(8), cron(8), sendmail(8)
バグ
/var/run/utmp が利用できないか不正であった場合、もしくは at が実行された
時にユーザがログインしていない場合、環境変数 LOGNAME で表される userid に
メールが送られます。もし定義されていないか空ならばカレントの userid にな
ります。
ユーザ同士でリソースの競合がある場合は現実装の at と batch は適当ではあり
ません。もしあなたのサイトがこのような場合にあてはまるのなら、 nqs のよう
な他のバッチシステムを検討してください。
作者
at のほとんどの部分は Thomas Koenig <ig25 @ rz.uni-karlsruhe.de> によって作
成されました。時間の構文解析部分は
David Parsons <orc @ pell.chi.il.us> によって作成されました。
FreeBSD 4.7 April 12, 1995 FreeBSD 4.7
murakoshi ryuuji さんは書きました:
>はじめまして
>私の環境はOS:Red Hat8.0、mailサーバー:qmail-1.03、PHP:php4.31なのですが
>よくスケジュール機能とかにあります指定した時間にメールを送ると言う機能をつけ
>たいと
>思っているのですが、どのようにすればよいかまったくわからなくなってしまい
>困っております。どなたかそのような機能を作った方いましたら、ご助言よろしくお
>願い
>いたします。
>______________________________________________________________________
>
>_______________________________________________
>PHP-users mailing list
>PHP-users @ php.gr.jp
>http://ns1.php.gr.jp/mailman/listinfo/php-users
PHP-users メーリングリストの案内