イベント (フォーム送信) の 10 分後、PHP でのコードの実行 (たとえば、電子メールの送信) を遅らせる必要があります。
これを達成するための最良の方法は何ですか?
私の唯一の選択肢は、毎分Cronjobを実行することですか? これは共有ホスティングで実用的ですか?
cronjobs を使用するのが最善の方法です。
共有ホスティングで cronjob を使用できない場合 (カスタマー サポートに問い合わせてください)、インターネットに接続されたマシン (つまり、自宅のコンピューター) で cronjob を実行して、サーバー上の php ページへの wget を実行し、認証します。その上で、php コードを実行してメールを送信します。
PHP コードの部分では、送信するすべての電子メール、creation_date フィールド、および status フィールドを含むデータベース テーブルを使用します。
ジョブによって呼び出される PHP コードは、単純に (疑似コードで) 行います。
$batchRecords = takeAbunchOfRecordsWhereStatus(NOT_SENT);
while($batchRecords) {
if($creationDate + 10 minutes >= now()) {
sendEmail();
markRecordAsSent();
}
}