|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.02.2009, 09:35 | #1 |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
mysql_connect - обработка исключений
Поискал в гугле, по PHP - форумам... Есть близкие вещи, но не то.
Суть такая - есть шлюз amfphp, php и flex. На php скрипт приходит запрос с параметрами, на который он должен ответить либо результатом подключения к базе, либо генерацией ошибки. Ошибки замечательно отлавливаются средствами Flex'а, тут проблем нет. Но. mysql_connect в зависимости от того, почему подключение не состоялось, генерирует конкретную ошибку, с конкретным кодом и текстом, а в возвращает - вне зависимости от причины - один и тот же false. Т.е. когда мне надо вывалить сообщение на flex-клиента, с описанием причины, на основании этого я действовать не могу. Остается такой вариант - не подавляя вывод ошибок в mysql_connect - перехватывать их на стороне клиента. Малоприятное и децентрализованное занятие, плюс ко всему шлюз amfphp вместо кода ошибки в данном случае передает строку "AMFPHP_RUNTIME_ERROR". Парсить строку с сообщением? Еще один кусок гомнокода... Ребят, подскажите - можно ли внутри кода PHP 5 отловить ошибку, сгенерированную функциями вроде мускулконнекта?
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
|
06.02.2009, 10:52 | #2 |
Laravel/Vue expert
Старожил Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 2,832
|
|
06.02.2009, 11:07 | #3 | ||
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
Хм. кусок- так кусок))
значится так. Код:
PS. Набрел на set_error_handler. Но. если я делаю так: Код:
Цитата:
http://ua.php.net/manual/en/language...types.callback - пришел к такому: Код:
Код:
Цитата:
предупреждая вопросы - просто без выкрутасов trigger_error и throw new Exception (пока я не пытаюсь сделать кастомный перехват ошибок) передают ошибки в клиента без проблем.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
Последний раз редактировалось crazy horse; 06.02.2009 в 19:15. |
||
06.02.2009, 13:31 | #4 |
Laravel/Vue expert
Старожил Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 2,832
|
Тогда надо буит читнуть вот тут: http://ua2.php.net/exceptions
|
06.02.2009, 18:11 | #5 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
Если написал что не просили не ругайтесь
Вариантов вагон и маленькая тележка... 1)set_error_handler - установить обработчик ошибок, поскольку Вы пишете обработчик для определённого участка кода устанавливаете обработик перед выполнением кода а после вызываете ф-ю restore_error_handler(). Никаких параметров ф-ии отправлять не надо параметры будут "даны" скрыто PHP код:
PHP код:
PHP код:
PHP код:
Стрелок-охотник
Последний раз редактировалось mv28jam; 06.02.2009 в 18:23. Причина: обьявление в обработку вписал |
06.02.2009, 18:32 | #6 |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
Спасибо. Однако, как я уже говорил, все эти варианты, кроме первого, вернут мне только невозможность установить коннект. , же хочу знать - почему: то-ли юзверь ввел невалидные данные, то-ли попросту отвалился мускул. Сама функция mysql_connect дает этот ответ, но, к сожалению, его необходимо перехватить (выдается именнно error а не exception) и видоизменив, передать на стандартный вывод ошибок или исключений. Первый вариант - близок, но попытки его использовать приводят к ошибкам, которые описаны моим постом выше. Может просто у меня уже голова не варит, но я не могу понять, почему.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
|
06.02.2009, 18:39 | #7 |
Laravel/Vue expert
Старожил Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 2,832
|
crazy horse,
Информация о ишибках мускула выдается так: echo mysql_errno() . ": " . mysql_error() . "\n"; |
06.02.2009, 18:53 | #8 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
Я же написал что варианты 1 и 4, вам надо просто сделать перебор ошибок по номерам или сообщению.
1)функцию set_error_handler надо вызывать с параметром названия пользовательской ф-ии обработчика, error_f в моём примере, а на вход этой ф-ии ошибка будет подана втоматически в виде её параметров PHP код:
PHP код:
Стрелок-охотник
Последний раз редактировалось mv28jam; 06.02.2009 в 18:57. |
06.02.2009, 19:10 | #9 |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
2mv28jam
я понимаю, что обработка идет в теле функции, описанной в кач-ве параметра set_error_handler. Тут суть такая - у меня этот ф-я вызывается в конструкторе объекта, который после выполнения запроса уничтожается. Вызывать её локально - смысла нет. Дальше. Echo у меня не пашет - клиент не браузер, а flash, по протоколу AMF. Но он замечательно принимает и распознает ошибки и эксэпшены, передаваемые пыхом. Поэтому я из тела обработчика выплюнул наружу кастомный эксепшн. Вобщем - вне обработчика - это работает. А внутри - ни он, ни банальный trigger_error. 2SkyM@n & mv28jam за mysql_error() - огромное спасибо! Это как надо было заработаться, чтобы забыть о нем?))) касательно set_error_handler - вопрос остается открытым. Не пашет он у меня. Видимо прошу его плохо.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
|
07.02.2009, 00:29 | #10 |
Laravel/Vue expert
Старожил Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 2,832
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Fatal error: Call to undefined function mysql_connect() | Air | Помощь студентам | 1 | 17.01.2009 12:41 |
Обработчик исключений Delphi | xxxPascalxxx | Помощь студентам | 5 | 30.11.2008 06:37 |
Обработка исключений ввода в TMaskedEdit | joker | Общие вопросы Delphi | 8 | 11.06.2008 15:02 |
обновление в блоге - Обработка исключений в Delphi | Pblog | Обсуждение статей | 0 | 11.09.2007 18:40 |