![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Кстати на настоящих сайтах где есть норм посещения, у меня вообще все по другому работает....
Я все же скрипт все равно обрываю, но перед этим, я пишу в error log (текстовый файл на сервере) Ошибку, и потом я могу посмотреть когда она произошла, на какой странице с какими параметрами, и код ошибки... Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:18 |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Что мешает в __destruct сделать проверку - открыто ли соединение и закрывать его? |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, Вы должны понять что у меня сильная нехватка знаний.
Я очень плохо знаком с __destruct Из того что я читал и слышал, она срабатывает когда мы на объект делаем unset Но если мы делаем trigger или exit , скрипт обрывается (не на 100% уверен насчет trigger, но вроде так)... Если я читал в левых источниках, и когда скрипт останавливается не важно как, и создан объект класса, будет вызван __destruct то тогда вы однозначно правы, и я так и сделаю, ибо такой подход проще и лучше... сейчас почитаю Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:23 |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Тут поможет документация.
http://ru.php.net/exit
|
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, Я сформирую вопрос немного иначе...
Когда скрипт обрывается, или заканчивает выполнение автоматический вызываются __destructor всех созданных объектов? Вы процитировали will always be executed even if exit() is called. А если exit not called а called trigger_error / скрипт просто закончился Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:25 |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
см. выше. там есть ответ на вопрос
Добавлено через 7 минут и 3 секунды как бе, вызываешь триггер еррор и потом экзит. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, Спасибо, поигрался немного с __destruct при разных условиях и понял что к чему
У меня кстати целый домейн зареген чисто ради тренеровок =-) http://learn-php.ru Вот только осталось понять когда и как его использовать... Вроде бы при работе с БД, самое то... Но когда у нас класс вроде ini_Parser то все что у нас есть в классе это массив который содержит данные ini и через __destruct мы просто можем освободить память как бы... но есть ли в этом какой то смысл? или скрипт сам освобождает память в конце выполнения что скорее всего так и есть? Судя по http://stackoverflow.com/questions/2251113...in-php-destruct , кроме как закрытия подключений не нужно... Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:52 |
|||
|
||||
| gta4kv |
|
||||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Ответ по твоей же ссылке6
|
||||
|
|||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
gta4kv, угу, я так и сказал "кроме как закрытия подключений не нужно..."
|
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Кроме того не знаю откуда вы взяли, что mysqli работает не так как mysql. После выполнения скрипта PHP закрывает все открытые соединения к базе данных, так что ваши беспокойства по поводу утечки соединений напрасны и необоснованы. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
cutwater, Вот в этой теме обсуждалось http://forum.vingrad.ru/forum/topic-308721.html
Я когда разрабатывал один из скриптов выскакивали ошибки которые остонваливали скрипт без вызова kill + close поэтому мне удалось дойди до предела... и вот как бы выходит что автоматом там не закрывает при определенных условиях |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Ну быть может тут я не прав, в таком случае конечно mysqli не совсем может быть удобен. Однако насколько я знаю уже в PDO решили эти проблемы и он вполне юзабелен. Я с mysqli на практике не сталкивался, работал с PDO и mysql, поэтому таки могу и ошибаться.
|
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
cutwater, Кстати если подумать так, то без вспомогательного класса вроде моего через который я использую mysqli, не только что нужно писать больше кода каждый раз,
а ещё и нету __destruct и надо следить за закрытием каждый раз... а это фактически не возможно, потому что и другие классы и методы могут выкинуть свои ошибки после открытия подключения... __destruct конечно супер тема, как то я им активно не пользовался раньше... Это сообщение отредактировал(а) Muerto - 6.9.2010, 16:50 |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
В динамических языках деструкторы мало применяются, так как время жизни объекта нельзя контролировать.
Для этого есть PDO, посмотрите, полезно будет. Добавлено через 44 секунды При чем обертка не только для mysql, что тоже нельзя не исключать. Вы все еще используете mysql? тогда мы идем к вам =) |
|||
|
||||
| gta4kv |
|
||||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
я кстати не понимаю, зачем ты в каждый класс добавляешь getInstance когда можно сделать самый простой класс для синглетона:
Добавлено через 1 минуту
Используем. Это сообщение отредактировал(а) gta4kv - 6.9.2010, 16:53 |
||||
|
|||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |