J'ai une classe qui gère l'enregistrement des utilisateurs. Il y a deux étapes principales: insérer des utilisateurs dans une table mysql, puis envoyer un e-mail de confirmation si l'insertion réussit.Requêtes Caching/Tables temporaires pour PHP et MySQL
Est-il possible que je peux ... Je ne sais pas ... sortez du cache la première étape pour que les données ne soient pas insérées si la fonction qui gère l'envoi du message échoue?
Je peux vérifier si sendmail est activé sur le serveur, et si ce n'est pas le cas, ne pas même effectuer la requête. Je pense que cela fonctionnerait la plupart du temps, mais je veux aussi attraper les moments où sendmail est activé, mais il y a juste une erreur avec l'envoi de l'e-mail.
Je pensais à insérer toutes les données dans une table temporaire, et si l'envoi de courrier réussit à copier la ligne dans la table permanente. Le problème avec ceci est que j'appelle une procédure stockée pour insérer des données, et le truc de courrier se passe dans le code d'application, donc dès que l'insertion est faite, une table de temp serait autodelete (est-ce correct?).
Je ne pense pas que vous ayez vraiment ce problème à résoudre. Si vous avez déjà vérifié que sendmail fonctionne, l'appel 'mail' ne peut pas échouer. Si le courrier ne peut pas être livré, ou rebondit, ou l'adresse ne pointe pas vers un serveur réel, ou quoi que ce soit de ce genre ... l'appel mail sera toujours couronné de succès, seul le serveur mail connaît ces choses, pas PHP . –
Si vous voulez toujours faire quelque chose ici, vous le rendez trop compliqué. 'if (! mail (quelquechose)) mysql_query (" DELETE FROM table WHERE id = LAST_INSERT_ID() ");' ... ou utilise les transactions et la restauration au lieu de commettre à ce stade. –