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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс db_con 
V
    Опции темы
Muerto
Дата 6.9.2010, 14:18 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Кстати на настоящих сайтах где есть норм посещения, у меня вообще все по другому работает....

Я все же скрипт все равно обрываю, но перед этим, я пишу в error log (текстовый файл на сервере) Ошибку, и потом я могу посмотреть когда она произошла, на какой странице с какими параметрами, и код ошибки...

Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:18


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.9.2010, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


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

Репутация: 21
Всего: 91



Цитата

то если мы работает с mysqli подключения сами закрываться не будут в конце работы скрипта

Что мешает в __destruct сделать проверку - открыто ли соединение и закрывать его?
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 14:21 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



gta4kv, Вы должны понять что у меня сильная нехватка знаний.
Я очень плохо знаком с __destruct

Из того что я читал и слышал, она срабатывает когда мы на объект делаем unset
Но если мы делаем trigger или exit , скрипт обрывается (не на 100% уверен насчет trigger, но вроде так)...


Если я читал в левых источниках, и когда скрипт останавливается не важно как, и создан объект класса, будет вызван __destruct то тогда вы однозначно правы, и я так и сделаю, ибо такой подход проще и лучше... сейчас почитаю


Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:23


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.9.2010, 14:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


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

Репутация: 21
Всего: 91



Тут поможет документация.
http://ru.php.net/exit


Цитата

 Terminates execution of the script. Shutdown functions  and object destructors  will always be executed even if exit() is called. 

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 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


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.9.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


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

Репутация: 21
Всего: 91



см. выше.  там есть ответ на вопрос

Добавлено через 7 минут и 3 секунды
как бе, вызываешь триггер еррор и потом экзит.
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 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


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.9.2010, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


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

Репутация: 21
Всего: 91



Цитата

или скрипт сам освобождает память в конце выполнения что скорее всего так и есть?

Ответ по твоей же ссылке6
Цитата

You really don't need to worry about cleaning up your variable declarations in PHP, it's garbage collection takes care of all of that for you

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


Эксперт
***


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

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



gta4kv, угу, я так и сказал "кроме как закрытия подключений не нужно..."


--------------------
user posted image
PM MAIL   Вверх
cutwater
Дата 6.9.2010, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Muerto @  6.9.2010,  13:56 Найти цитируемый пост)
gta4kv, угу, я так и сказал "кроме как закрытия подключений не нужно..." 


Кроме того не знаю откуда вы взяли, что mysqli работает не так как mysql. После выполнения скрипта PHP закрывает все открытые соединения к базе данных, так что ваши беспокойства по поводу утечки соединений напрасны и необоснованы.


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



cutwater, Вот в этой теме обсуждалось http://forum.vingrad.ru/forum/topic-308721.html
Я когда разрабатывал один из скриптов выскакивали ошибки которые остонваливали скрипт без вызова kill + close
поэтому мне удалось дойди до предела... и вот как бы выходит что автоматом там не закрывает при определенных условиях


--------------------
user posted image
PM MAIL   Вверх
cutwater
Дата 6.9.2010, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну быть может тут я не прав, в таком случае конечно mysqli не совсем может быть удобен. Однако насколько я знаю уже в PDO решили эти проблемы и он вполне юзабелен. Я с mysqli на практике не сталкивался, работал с PDO и mysql, поэтому таки могу и ошибаться.


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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


__destruct конечно супер тема, как то я им активно не пользовался раньше...

Это сообщение отредактировал(а) Muerto - 6.9.2010, 16:50


--------------------
user posted image
PM MAIL   Вверх
cutwater
Дата 6.9.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В динамических языках деструкторы мало применяются, так как время жизни объекта нельзя контролировать.
Для этого есть PDO, посмотрите, полезно будет.

Добавлено через 44 секунды
При чем обертка не только для mysql, что тоже нельзя не исключать. 

Вы все еще используете mysql? тогда мы идем к вам =)


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.9.2010, 16:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


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

Репутация: 21
Всего: 91



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

Код

<?php

class singleton
{
    private static $instance = array( );

    private function __constuct() {}
    
    public function getInstance( $class = null )
    {
        if( is_null( $class ) )
        {
            trigger_error( 'Информация о классе отсутствует', E_USER_ERROR );
        }
        if( ! array_key_exists( $class, self::$instance ) )
        {
            self::$instance[ $class ] = new $class;
        }
        return self::$instance[ $class ];
    }
    
    public final function __clone(  )
    {
        trigger_error( 'Клонирование паттерна-одиночки не возможна', E_USER_ERROR );
    }
}

?>


Добавлено через 1 минуту
Цитата

Вы все еще используете mysql? тогда мы идем к вам =) 

Используем.

Это сообщение отредактировал(а) gta4kv - 6.9.2010, 16:53
PM MAIL   Вверх
Страницы: (8) Все « Первая ... 4 5 [6] 7 8 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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