私はユーザ登録を扱うクラスを持っています。主に2つのステップがあります:ユーザをmysqlテーブルに挿入し、挿入が成功した場合に確認メールを送信することです。PHPとMySQL用のクエリ/テンポラリテーブルのキャッシュ
私はできることはありますか...わかりません...電子メールの送信を処理する関数が失敗した場合、データが挿入されないようにキャッシュの一種ですか?
サーバー上でsendmailが有効になっているかどうかを確認し、そうでない場合はクエリを実行していないことも確認できます。私はそれがほとんどの場合はうまくいくと思うが、sendmailが有効になっている時間を捉えたいが、電子メールの送信に何らかのエラーがある。
私はすべてのデータを一時テーブルに挿入しますが、メールの送信が成功した場合は、そのテーブルを永久テーブルにコピーします。これの問題は、データを挿入するストアドプロシージャを呼び出していることです。メールの内容がアプリケーションコードで発生しているので、挿入が完了するとすぐに、テンポラリテーブルが自動修正されます(正しいのですか?)。
私はあなたが実際にこの問題を解決するとは思わないです。すでにsendmailが動作していることを確認していれば、 'mail'呼び出しが失敗することはありません。メールが配信されない、またはバウンスされたり、アドレスが実際のサーバなどを指していない場合、メールの呼び出しは成功し、PHPではなくメールサーバだけが知っています。 –
まだここで何かしたいのなら、あなたはそれを過度に複雑にしています。 'if(!mail(任意))mysql_query(" DELETE FROM table WHERE id = LAST_INSERT_ID() ");' ...またはこの時点でコミットの代わりにトランザクションとロールバックを使用します。 –