Как обойти "Fatal error: Maximum execution time exceeded"?

Arantir

Новичок
В общем, скрипт соединяется с базой данных. И вот если база недоступна, то вылетает такая ошибка.
Но дело в том, что после этой ошибки падает весь скрипт! На странице остается только то, что выведено до кавычек "<?php ?>" с этой злополучной ошибкой, а дальше - пусто. Из-за этого к чертям летит все оформление и структура сайта.
Соединяюсь как обычно:
PHP:
$connect = mysql_connect($server,$db_user,$db_pass);
if ($connect) {
    // запрсы в базу
    mysql_close($connect);
} esle { /*сообщение об ошибке*/}
И Fatal error меня тыкает прямо в строку "$connect = mysql_connect($server,$db_user,$db_pass)". Почему? По идее должно просто возвратить false. Переменные корректны, по echo с них выводятся нужные значения.
Пробовал сделать try-catch, все равно тыкает в эту сроку!
Пробовал error_reporting(0) - то же самое!
Увеличить лимит времени - не вариант на случай полного отсутствия соединения с базой.
Больше в скрипте ошибок нет - если закомментировать строку "$connect = mysql_connect($server,$db_user,$db_pass)" - скрипт прекрасно работает, как будто просто возникла ошибка соединения.
Ну должен же быть способ как-то корректно организовать дальнейшие действия, если база недоступна, а не сразу Fatal error и остановка скрипта.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ты уверен что у тебя там ошибка? У тебя слово else написано неверно.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
А вообще

PHP:
ini_set('mysql.connect_timeout', 1);
 

Arantir

Новичок
c0dex
Не надо придираться... Я тот код вручную написал, а не скопировал. Это просто опечатка.
В первом посте содержится сразу 2 ответа на твой вопрос:
Fatal error меня тыкает прямо в строку "$connect = mysql_connect($server,$db_user,$db_pass)"
если закомментировать строку "$connect = mysql_connect($server,$db_user,$db_pass)" - скрипт прекрасно работает,
 

С.

Продвинутый новичок
Ну должен же быть способ как-то корректно организовать дальнейшие действия, если база недоступна, а не сразу Fatal error и остановка скрипта.
Ты понимаешь смысл слова "Fatal"? Никакие дальнейшие действия невозможны. И это не из-за недоступности базы.
 

Arantir

Новичок
А вообще

PHP:
ini_set('mysql.connect_timeout', 1);
Хм... Все равно эта же ошибка, причем с прежними 30 секундами.

Ты понимаешь смысл слова "Fatal"? Никакие дальнейшие действия невозможны. И это не из-за недоступности базы.
Понимание смысла этого слова почему-то от проблемы абсолютно никак не спасает, знаете ли... Что действия невозможны я и так понял, в этом заключается проблема.
Если сервер с базой включен, то скрипт выполняется нормально. Если строка с соединением закомметнирована, то скрипт тоже выполняется нормально, указывая, что он не соединился с базой (по условию else после if($connect)).
А вот если база недоступна и скрипт пробует соединится, то почему-то возникает Fatal error с явным указанием на номер строки, содержащей соединение с базой.
И вот именно это мне непонятно, так как по идее функция должна просто возвращать false, а не вызывать критическую ошибку.

Еще могу добавить, что при удачном соединении запись в базу производится успешно.
 

С.

Продвинутый новичок
почему-то возникает Fatal error с явным указанием на номер строки
Найти ответить на твой вопрос не сложно. Нужно просто дочитать до конца фразу, начинаюшуяся словами "Fatal error:"
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
автор, приведи сюда код, скопируй, где ты вставил то, что я привел сюда, а именно с строкой:
ini_set(...);
 

Arantir

Новичок
c0dex
PHP:
$continue = false;
if ($_POST['step'] == 3) {
    if ($errors == 0) {
        $continue = true;
    }
}
if ($continue) {
    ini_set('mysql.connect_timeout', 10);
    $conn = mysql_connect($server,$db_user,$db_pass);
    if (!$conn) {
        echo '<div class="error">Ошибка связи с базой данных!</div><br>';
    } else {
        mysql_select_db($db_game);
        mysql_select_db("forumDB");
        mysql_set_charset('utf8',$conn);
        $insrt = "INSERT INTO `users` (login, pass, lastactive, privilegeslvl, lastIP) VALUES ('$char_login', '$char_pass', 0, -1, 0)";
       $send_insrt = mysql_query($insrt,$conn);
       if ($send_insrt) {
           echo ''<div class="sucesses"></div><br>';'
       }
    }
}
Еще просто вставлять ini_set в начале скрипта, но то же самое.
И, повторюсь, при включенной базе подключается и производится запись нормально.
 

HEm

Сетевой бобер
У скрипта тоже есть ограничение по времени работы. И все это время он тратит на попытку соединения с базой
 

HEm

Сетевой бобер
PHP:
 ini_set('mysql.connect_timeout', 10);
сделай дальше
PHP:
 echo "mysql connection time = ".ini_get('mysql.connect_timeout');
 
Сверху