J'ai une application Web qui est utilisée par une entreprise pour consigner le travail de ses employés.Quelle est la meilleure façon de gérer "Attention: mysql_connect(): Trop de connexions" avec Kohana 3?
Beaucoup de gens sont souvent connectés en même temps.
L'application s'exécute sur un hôte partagé.
Je reçois parfois ...
Warning: mysql_connect() [function.mysql-connect]: Trop de connexions
Ce qui permet ensuite cascade d'autres erreurs ... comme des erreurs avec mysql_select_db()
, mysql_error()
, mysql_errnon()
et enfin le non pris Database_Eexception
.
Lorsque j'exécute ma demande principale, je l'enveloppe dans un try
et capture toute exception et affiche une page introuvable. En effet, mes contrôleurs lancent généralement des exceptions si une ressource n'est pas trouvée (bien que la route soit valide), par exemple. http://example.com/products/30
est une route valide, mais le produit n ° 30 n'existe pas.
Quelle est la meilleure façon de gérer le trop de connexions? Idéalement, je voudrais capturer cette exception séparément, puis afficher une belle page qui informe l'employé d'essayer à nouveau dans 5 minutes.
Le code qui exécute ma demande principale application/bootstrap.php
ressemble à ceci ...
$request = Request::instance();
try {
$request->execute();
} catch (Exception $e) {
if (Kohana::$environment === Kohana::DEVELOPMENT) throw $e;
// Log the error
Kohana::$log->add(Kohana::ERROR, Kohana::exception_text($e));
// Create a 404 response
$request->status = 404;
$request->response = Request::factory(Route::get('catch_all')->uri(array('path' => 'errors/404')))->execute();
}
$request->send_headers();
echo $request->response;
Merci pour toute aide!
Peut-être devriez-vous utiliser 'set_exception_handler()' au lieu de changer la logique de la classe de base du système? Quelque chose comme 'si (Kohana :: DEVELOPMENT! == Kohana :: $ environnement) {set_exception_handler (array ('Kohana', 'exception_handler'));}' dans bootstrap.php – biakaveron
@biakaveron: pour quelle raison?C'est un polymorphisme statique - donc je viens de remplacer une méthode. – zerkms