Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как перехватить Fatal error 
:(
    Опции темы
sTa1kEr
Дата 19.12.2009, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Simpliest @  19.12.2009,  01:48 Найти цитируемый пост)
Я смотрю у вас в хайлоаде работают исключительно с маленькими скриптами и монолитными приложениями из одного файла? Мысль о том, что приложение может состоять из нескольких частей тебе упорно не приходит в голову?

Это ты не никак поймешь, что PHP скрипт - это одно цельное приложение. Нельзя прервать критической ошибкой выполнение скрипта на полпути и при этом быть уверенным, что он сохранил все свои состояния, закрыл все потоки, откатил все транзакции, закрыл корректно соединения, очистил все временный данные, etc. И при этом совершенно не важно из скольких скриптов состоит само приложение, так или иначе мы должны быть уверенны, что каждая такая частичка приложения отработала корректно без ошибок. 

Цитата(Simpliest @  19.12.2009,  01:48 Найти цитируемый пост)
А что изменится? Я в любом случае делаю редирект. Более того, если ты не знал ob_start могут быть вложенными.

Суть в том, что мы можем явно завершить буферизацию вывода. Кроме того редирект не будет работать, если заголовки уже отправлены. Что дальше, JavaScript? 

Цитата(Simpliest @  19.12.2009,  01:48 Найти цитируемый пост)
С этим справится стандартный обработчик.

Не справится, если у меня так же будет свой обработчик.

Цитата(Simpliest @  19.12.2009,  01:48 Найти цитируемый пост)
Более того...  никто ведь не помешает мне сделать  session_start(); еще раз 
непосредственно в обработчике.

Особенно, когда заголовки уже отправлены. Или используется свои session handlers.

Цитата(Simpliest @  19.12.2009,  01:48 Найти цитируемый пост)
И? Будет лишь другой способ передачи сообщений и управления между компонентами приложения. Суть не измениться.

Еще один способ? Мне даже было бы интересно на него посмотреть.

Не ужели ты правда не понимаешь, что это все подпорки для костылей? Посмотри на свой скрипт еще раз, а ведь это только тестовый пример. 

Цитата(Simpliest @  19.12.2009,  01:48 Найти цитируемый пост)
В качестве метода инстанцирования модуля может использоваться fork, redirect, ajax-request, SOAP/RPC запрос.

А вот это уже точно тянет на "почетное" первое место этого топика. smile 
PM MAIL   Вверх
Simpliest
Дата 19.12.2009, 10:39 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



Цитата(sTa1kEr @  19.12.2009,  01:05 Найти цитируемый пост)
что PHP скрипт - это одно цельное приложение

А почему именно скрипт?
Почему не функция smile или оператор. И не дай бог ему возвратить false или бросить Exception, который он самостоятельно не обрабатывает smile

Чудненько ты договорился smile


--------------------
user posted image
PM   Вверх
Fubu_By
Дата 21.12.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 14.2.2007

Репутация: нет
Всего: 0



Цитата(sTa1kEr @ 18.12.2009,  17:29)
Бррр... опять демагогия пошла smile 

Сухие факты:
Фатальная ошибка - это Fatal Error, вне зависимости от назначения скрипта. Точка.
Fatal Error - в PHP скрипте перехватить и обработать никак нельзя. Точка.
Избежать возникновения Fatal Error при работе с изображениями можно сл. способами:
   a. Ограничить размер обрабатываемых картинок.
   б. Использовать консольные утилиты.
   в. ...

ты прав. думаю лучше вообще перейти на консольную утилиту для ресайза изображений, раньше об этом думал а щас когда проект в основном работает с изображениями забыл про консоль.

посоветуй, пожалуйста, скрипт какой нормальный....


--------------------
PM MAIL WWW   Вверх
Ипатьев
Дата 21.12.2009, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



imagemagick
PM MAIL   Вверх
sTa1kEr
Дата 21.12.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Ипатьев @  21.12.2009,  13:05 Найти цитируемый пост)
imagemagick 

Совершенно верно.
Код

exec('mogrify -resize 200 '.escapeshellarg($image).' 2>&1', $errors, $code);
if ($code != 0) {
    // Обработка ошибок, сами ошибки в массиве $errors
    throw new Exception(implode($errors));
}


Это сообщение отредактировал(а) sTa1kEr - 21.12.2009, 15:57
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1875 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.