У меня есть веб-приложение, которое используется компанией для регистрации работы своих сотрудников.
Многие люди часто входят в систему сразу.
Приложение работает на общем хосте.
Я иногда получаю ...
Предупреждение: mysql_connect () [function.mysql-connect]: слишком много соединений
Который затем позволяет дальнейшим каскадным ошибкам ... подобно ошибкам с mysql_select_db()
, mysql_error()
, mysql_errnon()
и, наконец, необработанным Database_Eexception
.
Когда я запускаю свой основной запрос, я заключаю его в try
, фиксирую любое исключение и отображаю страницу not found . Это потому, что обычно мои контроллеры выдают исключения, если ресурс не найден (хотя маршрут может быть действительным), например http://example.com/products/30
является допустимым маршрутом, но продукт № 30 не существует.
Как лучше всего справиться с слишком большим количеством соединений ? В идеале я бы хотел зафиксировать это исключение отдельно, а затем отобразить красивую страницу, которая сообщает сотруднику о необходимости повторить попытку через 5 минут.
Код, который запускает мой основной запрос в application/bootstrap.php
, выглядит следующим образом ...
$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;
Спасибо за любую помощь!