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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сохранить константы в php? 
:(
    Опции темы
Royan
  Дата 17.12.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

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



Недавно я сделал для себя неприятное открытие, хотя, сейчас оно кажется вполне очевидным. Константы, которые я объявляю в php файлах вычисляются каждый раз когда я загружаю страничку. Это разумеется весьма грустно и представляет кучу неудобств. Представьте, что вы записываете в константу результат некоего весьма долгого вычисления, вы им пользуетесь, пока исполняется скрипт и затем это значение пропадает. Еще хуже если это значение нельзя закешировать (например хэндл к открытому файлу или хэндл коннекции куда либо или т.п.), тогда вы обречены каждый раз при запросе странички высчитывать одно и то же... У меня вопрос есть ли в PHP инструменты которые позволяют хранить значения переменных на протяжении работы сервера? 


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
skyboy
Дата 17.12.2007, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Royan @  17.12.2007,  10:55 Найти цитируемый пост)
Константы, которые я объявляю в php файлах вычисляются каждый раз когда я загружаю страничку.

так как РНР - не компилируемый язык, все логично. От момента предыдущего обращения к странице код, содержащийся в ней, мог измениться.
Цитата(Royan @  17.12.2007,  10:55 Найти цитируемый пост)
У меня вопрос есть ли в PHP инструменты которые позволяют хранить значения переменных на протяжении работы сервера?

есть возможность связи с БД  smile

Добавлено через 1 минуту и 6 секунд
Цитата(Royan @  17.12.2007,  10:55 Найти цитируемый пост)
которые позволяют хранить значения переменных

а ведь сразу про константы говорил...

PM MAIL   Вверх
flashaa
Дата 17.12.2007, 12:10 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 19
Всего: 25



Цитата(Royan @  17.12.2007,  11:55 Найти цитируемый пост)
вы обречены каждый раз при запросе странички высчитывать одно и то же..
Это обычное явление, т.к. скрипт выполняется и завершает, только если он не демон (постоянно висящий на сервере процесс).

Цитата(Royan @  17.12.2007,  11:55 Найти цитируемый пост)
У меня вопрос есть ли в PHP инструменты которые позволяют хранить значения переменных на протяжении работы сервера?  


Для переменных по-моему отличный механизм serialize/unserialize:

Код

// Получение выборки из бл
$selection = $db->select('SELECT * FROM table');

// $selection - массив., сериализуем его и сохраним куда-то

file_put_contents('my_hash', serialize($selection));


Теперь при следующем запросе мы можем "воссоздать" наш массив, как и ЛЮБУЮ переменную, в т.ч. объект.

Код

$selection = unserialize(file_get_contents('my_hash'));

// наш массив сохранился!
print_r($selection);




http://ru2.php.net/manual/ru/function.serialize.php
PM MAIL   Вверх
Feldmarschall
Дата 17.12.2007, 12:34 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



Цитата(Royan @  17.12.2007,  11:55 Найти цитируемый пост)
хэндл к открытому файлу или хэндл коннекции куда либо или т.п.), 

Ресурсы сохранять нельзя.
К этому легко привыкнуть, и проблема кажется мне надуманной.

PM   Вверх
Royan
Дата 17.12.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

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



Цитата(skyboy @  17.12.2007,  09:08 Найти цитируемый пост)
есть возможность связи с БД

Все это не интересно по причине времени доступа получения данных из базы. Жаль что у Apache нет такой же функциональности как у IIS, а именно объекта Application (http://msdn2.microsoft.com/en-us/library/ms525360.aspx)
Цитата(skyboy @  17.12.2007,  09:08 Найти цитируемый пост)
а ведь сразу про константы говорил...

Ошибся речь шла только о константах

Цитата(flashaa @  17.12.2007,  09:10 Найти цитируемый пост)
Для переменных по-моему отличный механизм serialize/unserialize:

flashaa Вы очень полезный человек на форуме smile много знаете, умеете объяснять и говорите по делу! Очередной раз спасибо за дельный совет!



--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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