Уже ни один раз жалел, что на стороне сервера нельза сохранить какие-нить свои перменные. Например: соединение с БД можно хранить в одной статичной пременной и при каждом запросе клиентов не создавать это соединение по новой, а использовать уже готовое соединение.
Вопрос. Есть ли такая возможость в php?
Спустя 7 минут, 55 секунд (2.07.2010 - 09:31) linker написал(а):
В случае БД mysql_pconnect(), для других случаев подойдет Shared memory или Messages queue.
Спустя 1 минута, 25 секунд (2.07.2010 - 09:33) Basili4 написал(а):
можно еще как 2 вариата 1. Файлы 2 БД. Выбираете какой Вам более по душе.
Спустя 3 минуты, 32 секунды (2.07.2010 - 09:36) multik написал(а):
mysql_pconnect() - это для одного клиента сойдет в момент выполнения скрипта, где подключение исспользуется много раз. А если много клиентов юзают один и тот же скрипт? Было бы лучше не для каждого mysql_pconnect делать, а для всех один раз.
Shared memory - в винде не работает, а я стараюсь писать всё кросплатформенно.
Messages queue - это очередь асинхронных сообщений, на которые могут подписываться много подписчиков. И как здесь по вашему сохранить переменную для её многократного использования многими клиентами?
Shared memory - в винде не работает, а я стараюсь писать всё кросплатформенно.
Messages queue - это очередь асинхронных сообщений, на которые могут подписываться много подписчиков. И как здесь по вашему сохранить переменную для её многократного использования многими клиентами?
Спустя 7 минут, 44 секунды (2.07.2010 - 09:44) multik написал(а):
Цитата (Basili4 @ 2.07.2010 - 06:33) |
можно еще как 2 вариата 1. Файлы 2 БД. Выбираете какой Вам более по душе. |
Работа с файлами будет едва ли быстрее чем просто постоянно создавать нужную переменную.
Работа с БД? Это конечно не то.
Вот вам небольшая информация: при создании подключения к БД теряется от 40мс до 80мс. Если нагрузка на скрипт довольно большая (много разных клиентов), то для увеличения быстродействия можно было бы хранить в памяти на стороне сервера одно подключение и затраты на создание подключения для каждого клиента при каждом запросы свелись бы к минимуму. Ещё лучший вариант - хранить не одно, а много подключений, т.е. пул соединений, дабы всем клиентам хвватало.
В ASP возможность хранения статичных пременных на стороне сервера есть, а в PHP получается нету?
Спустя 1 минута, 22 секунды (2.07.2010 - 09:45) linker написал(а):
multik
Цитата |
это для одного клиента сойдет в момент выполнения скрипта, где подключение используется много раз. |
эээ, не заблуждайтесь. Один раз коннект открылся и таким и остается и все клиенты его будут пользовать.
Для Messages queue точно также как и в случае с Shared memory.
Спустя 3 минуты, 14 секунд (2.07.2010 - 09:49) multik написал(а):
Например в ASP следующий код:
public static class MyStatic {
public static string x = "hallo word";
}
для всех клиентов по обращению MyStatic.x даст "hallo word". В php я обнаружил, что такой код тоже будет работать, но только во время выполнения запроса. При следующем запросы нужно опять инициализировать статические переменные.
public static class MyStatic {
public static string x = "hallo word";
}
для всех клиентов по обращению MyStatic.x даст "hallo word". В php я обнаружил, что такой код тоже будет работать, но только во время выполнения запроса. При следующем запросы нужно опять инициализировать статические переменные.
Спустя 4 минуты, 29 секунд (2.07.2010 - 09:53) multik написал(а):
Цитата (linker @ 2.07.2010 - 06:45) |
эээ, не заблуждайтесь. Один раз коннект открылся и таким и остается и все клиенты его будут пользовать. |
Да, что-то я пропустил этот факт. Ну да ладно, соединения с БД я взял как пример. Важна сама возможность, есть она или нет. Не важно что должно сохраняться.
Спустя 2 минуты, 42 секунды (2.07.2010 - 09:56) multik написал(а):
Apache ActiveMQ - один из многочисленных примеров реализации Mesage Queue. Под винду тоже идет. Но скажите мне - причем здесь статические серверные переменные?
Спустя 5 минут, 8 секунд (2.07.2010 - 10:01) sergeiss написал(а):
Цитата (multik @ 2.07.2010 - 10:23) |
Уже ни один раз жалел, что на стороне сервера нельза сохранить какие-нить свои переменные. |
Не то, чтобы совсем уж нельзя

Если ты хочешь оперативно передать данные из одного скрипта в другой, который запускается следом за первым, то сессия, возможно, решит твои проблемы.
Если же ты хочешь хотя бы через час (или позднее) получить эти данные, то тогда храни их где-нибудь, в файлах или в БД.
И еще. А куки, на клиентской стороне, не подходят? Что за задача-то?
Спустя 2 минуты, 7 секунд (2.07.2010 - 10:03) linker написал(а):
sergeiss, не, человеку нужно чтобы все пользователи брали данные из одной переменной, которая хранится на сервере, а куки и сессии рассчитаны тока на одного пользователя.
Спустя 4 минуты, 22 секунды (2.07.2010 - 10:07) sergeiss написал(а):
Цитата (linker @ 2.07.2010 - 11:03) |
sergeiss, не, человеку нужно чтобы все пользователи брали данные из одной переменной, которая хранится на сервере... |
Где это написано, что одна переменная на всех юзеров? Пример с БД не указывай.
Спустя 10 минут, 40 секунд (2.07.2010 - 10:18) Nikitian написал(а):
Ну как всегда порекомендую memcache
А так каждый новый запрос к серверу идёт самостоятельно и не связан с предыдущими. Для связывания используются сессии, а память очищается, даже в случае работы как php-cgi. Очистка памяти видимо делается для устранения последствий возможных утечек, хотя может есть и иные причины.
А так каждый новый запрос к серверу идёт самостоятельно и не связан с предыдущими. Для связывания используются сессии, а память очищается, даже в случае работы как php-cgi. Очистка памяти видимо делается для устранения последствий возможных утечек, хотя может есть и иные причины.
Спустя 25 секунд (2.07.2010 - 10:19) multik написал(а):
Ну хорошо. Пример значит такой: к linux'овой машине присоединено GSM-устройство, с которой можно отправлять SMS посредством PDU, я сдел web-сервис для отправки сообщений, но отправка занимает в среднем 5 сек, мне необходима хотя бы одна переменная, отвечающая за "занятость/не занятость" GSM-устройства. Хотелось бы иметь простую возможность хранения такой переменной (как ASP, т.е. GSMmodem.IsBusy).
Ну не с файлами же работать:(!
Ну не с файлами же работать:(!
Спустя 4 минуты, 44 секунды (2.07.2010 - 10:23) Basili4 написал(а):
Цитата (multik @ 2.07.2010 - 11:19) |
Ну не с файлами же работать:(! |
так чем вам файлы то не подходят
не хотите вних ниченго писать не пишите просто создавайте удаляйте я не думаю что механиз сохранения переменных на сервере ASP много отличается от храния файлов
Спустя 26 секунд (2.07.2010 - 10:24) multik написал(а):
Цитата (Nikitian @ 2.07.2010 - 07:18) |
Ну как всегда порекомендую memcache А так каждый новый запрос к серверу идёт самостоятельно и не связан с предыдущими. Для связывания используются сессии, а память очищается, даже в случае работы как php-cgi. Очистка памяти видимо делается для устранения последствий возможных утечек, хотя может есть и иные причины. |
Вот это уже интересно, спасибо
Спустя 1 час, 26 минут, 39 секунд (2.07.2010 - 11:50) multik написал(а):
ASP как раз держит статичные переменные в оперативной памяти.
Спустя 4 часа, 4 минуты, 54 секунды (2.07.2010 - 15:55) multik написал(а):
Цитата (multik @ 2.07.2010 - 07:24) | ||
Вот это уже интересно, спасибо |
Развернул memcached сервер, подключил модуль php_memcache к PHP. Все работает!!!
Всем рекомендую!