J'ai une application qui repose sur un serveur de savon pour produire du contenu. De plus, l'authentification sur le site est basée sur un serveur LDAP distinct. Évidemment, si l'un ou l'autre est en panne ou ne répond pas, le site est en panne. J'essaye de mettre en page une conception telle que je peux avoir le rapport d'erreur pour les admins de site et donner également un bon message à l'utilisateur dans le cas où le site est en panne. Les rapports d'erreurs ne sont en fait qu'un e-mail, une insertion de base de données ou un fichier journal sur le serveur de php $ _COOKIE, $ _SERVER, $ _SESSION, $ _REQUEST avec éventuellement une exception SoapFault. Cette information m'aiderait à déboguer tous les problèmes potentiels avec le site s'ils se produisent.php try catch rapport d'erreurs
Actuellement, mon site est conçu comme suit:
SoapClientInterface (defines soap functionality)
/\
|
| implements
|
Client (the client implementing the interface, try/catch blocks on all soap calls here)
/\
|
| extends
|
Authorization (asserts soap objects returned from server/ requests going to server
are appropriate for the user performing the request)
/\
|
| extends
|
{all children classes using the soap interface defined on this level}
Le diagramme pauvre ci-dessus :-) J'ai un client de classe qui englobe tous mes essayages blocs catch pour les exceptions SoapFault et me demande la meilleure façon pour faire deux choses avec les captures: 1. informer l'utilisateur qu'une action a échoué (toute ma fonctionnalité est dans les blocs if/else et si je détermine qu'une opération a échoué je redirige l'utilisateur vers une page de statut et je les informe que leur l'action a échoué
2. signaler la situation aux administrateurs de site pour le débogage (cette fonctionnalité à l'heure actuelle est une fonction simple définie dans la page de statut qui Lorsque la page d'état reçoit un code d'erreur, nous envoyons les variables Cookier, Serveur, Session et Demande et envoyons ce message par e-mail aux administrateurs du site.
Toute suggestion à ce sujet serait appréciée ou si vous avez besoin d'une clarification s'il vous plaît demander.
EDIT: Dans mon expérience avec la programmation web, mes applications affichent généralement le statut des actions de l'utilisateur sur la page dans laquelle l'action se déroule et ne redirigent pas ailleurs. C'est la première fois que j'ai codé une application pour effectuer une action utilisateur et la rediriger vers une page distincte pour tous les messages d'état. Devrais-je me donner des coups de pied de cette façon, est-ce que quelqu'un voit le mérite d'avoir une seule page d'état pour toutes les actions du site ou d'avoir une classe/fonction qui signale le statut sur la page dans laquelle l'action a eu lieu? (Je pose cette question en ce qui concerne la conception de la page de statut sur son propre et comment signaler les erreurs et quoi de ne pas.)
@ircmaxell tout d'abord merci pour la réflexion commentaires, appréciés. Deuxièmement, disons par exemple dans le cas d'une exception soapfault où un utilisateur a essayé d'effectuer une mise à jour, dans ce cas vous suggérez simplement de signaler une erreur à l'utilisateur, laissez-le sur le formulaire et laissez-le tenter de resoumettre. – Chris
@ircmaxell donc utiliser set_exception_handler() Je peux juste définir ma propre fonction pour gérer tout ce que je veux? Définir les rapports d'erreurs dans ce gestionnaire d'exceptions personnalisées, redirige si nécessaire, etc etc? Et puis juste avoir ma classe Client jeter des exceptions? Je ne comprends pas très bien comment obtenir un gestionnaire personnalisé dans mon design de la meilleure façon. – Chris
Eh bien, oui et non. Je ne les laisserais pas sur le formulaire à moins que le problème était avec leur entrée. Je les laisserais sur l'URL, et placerais l'en-tête de statut à '500', et afficherais une page disant que" Votre demande n'a pas pu être traitée pour le moment en raison d'une erreur de serveur inattendue. , s'il vous plaît contactez blah ... "En supposant que vous n'avez pas de protection CSRF stricte (signifiant supprimer la clé de session pour le jeton csrf lors de la soumission), ils peuvent simplement actualiser la page pour réessayer. Le problème avec la redirection, c'est qu'ils n'ont aucune idée de l'endroit où l'erreur s'est produite ... – ircmaxell