[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 メーリングリストの案内