![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| v00d00 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 28.12.2005 Репутация: нет Всего: нет |
Доброго времени
Есть класс
Как видим это синглтон. Используется он так:
Вопрос: как долго на вебсервере будет висеть инстанс класса? |
||||
|
|||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Как только скрипт закончит работу, сборщик мусора выкинет инстанс
|
|||
|
||||
| Simpliest |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: 1 Всего: 3 |
Если нужно долго висеть, то возможно подойдет паттерн Registry А в ZF можно посмотреть на его имплеменатцию http://framework.zend.com/manual/en/zend.registry.html |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Вот только в случае с коннектом к бд никакой паттерн не поможет.
Подключаться придется заново в любом случае |
|||
|
||||
| v00d00 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 28.12.2005 Репутация: нет Всего: нет |
А по какому принципу действует сборщик?
Ведь у меня по идее должна хранится ссылка на объект в статическом поле класса, хотя бы по этому он не может его удалить. Или парсер PHP будет каждый раз открывать файл через
и создавать новый инстанс? А старый следовательно удалять? Добавлено через 4 минуты Кстати класс этот обертка вокруг INI файла(как вы видели). Просто хранит в себе считанные данные. Собственно вопрос и возник потому что использование синглтонов в PHP кажется сомнительным удовольствием. Это сообщение отредактировал(а) v00d00 - 18.9.2009, 15:32 |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
v00d00, хранит все инстансы только во время генерации ответа на запрос. Паттерн синглетон не предзназначен для передачи инстанса между сессиями запросов. Как только сервер сгенерировал ответ, скрипт отработал, сборщик мусора удалит из памяти все ссылки на синглетон и сам инстанс
|
|||
|
||||
| v00d00 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 28.12.2005 Репутация: нет Всего: нет |
Пичаль. Сохраню настройки в пхп файл и буду инклюдить его как есть...
|
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
v00d00, есть другой вариант, perl и java (на сколько я знаю) поступают наоборот, именно так как тебе надо
Добавлено через 54 секунды v00d00, если уж так надо сохранять синглетон - var_export в помощь |
|||
|
||||
| Simpliest |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: 1 Всего: 3 |
Singletone гарантирует что при работе скрипта будет только 1 инстанс класса. Но скрипт у тебя завершается отдав данные, а работа приложения еще не завершена. Это особенность веб-приложений - они растянуты/разорваны в пространстве и времени. Т.е., когда произойдет следующий вызов скрипта(обращение к конкретному url) и какой именно скрипт будет вызван, мы не можем сказать со 100%й вероятностью. Поэтому для корректной работы нам надо хранить "состояния" приложения. Вот для хранения состояний между запросами/обращениями и используется Registry (в который ты, кстати, можешь сохранить и свой инстанс Singletone) P.S. Состояния можно хранить и в URL, и в hidden полях на страницах, и в базе/файле на сервере - это уже особенности реализации Это сообщение отредактировал(а) Simpliest - 18.9.2009, 16:16 |
|||
|
||||
| NewDima |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Для меня откровение Добавлено через 6 минут и 6 секунд И по-моему не правда Перечитал еще раз полность о ZendRegistry, ничего подобного не нашел, только это (что в начале):
|
||||
|
|||||
| Simpliest |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: 1 Всего: 3 |
||||
|
||||
| v00d00 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 28.12.2005 Репутация: нет Всего: нет |
На самом деле просто хотелось применить паттерн на практике. Проблема решается намного проще (и по реализации и по скорости выполнения) инклудом настроек.
Офтопик: Registry - это часть поставки Зенда? ( как тогда там реализован хранение данных между ответами ?) |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Никак, выражаясь языком Simpliest, это глупость
|
|||
|
||||
| Simpliest |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: 1 Всего: 3 |
Registry - это паттерн. Он ничей Я просто дал, как образец, ссылку на его реализацию в ZF http://framework.zend.com/manual/en/zend.registry.html |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Для меня тоже. Не вижу, что бы в Zend_Registry где-то сохранялось состояние объекта между сессиями и потом ресторилось. Да и нет там такого. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |