ユーザーが register.php を送信するときに検証メールが送信されるのを待たせるのではなく、後で mail.php ファイルを実行する必要があります。
そこで、1 分後にコマンド ラインで ( register.php で呼び出される) mail.php を実行するためにatコマンドを使用することにしました。
しかし、at コマンドのインタラクティブ モードを使用している場合にのみ、その php ファイルにパラメーターを送信できます。
at now + 1 minute
at> php mail.php {email} # {email} is the argument I want to pass
これを自動にしたいので、実行時にシェルスクリプトを使用する必要があります。
at -f mail.sh
しかし、 {email}引数を渡す適切な方法が見つかりませんでした。
シェルで環境変数を設定しようとしましたが、無駄でもありました:
register.phpファイルに、次のように書きました。
shell_exec('export email=foo@bar.com');
shell_exec('at -f mail.sh now + 1 minute');
mail.shに、次のように書きました。
#! /bin/bash
php mail.php $email