memcache и общий массив

kabachok

Новичок
memcache и общий массив

Существует класс, который читает и пишет в memcache массив.

массив имеет вид

Array
(
[SID] => Array
(
[time_start] => time
[time_last] => time
)
)

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

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

И как вообще организовать то что я описал?
 

MiksIr

miksir@home:~$
А не нада хранить все сиды в одном массиве. Для этого в мемкеше ключи придумали ;)

-~{}~ 04.07.08 01:06:

ЗЫ: а что, если один хит пользователя потеряется, это будет так ужасно? =)))
 

kabachok

Новичок
Автор оригинала: MiksIr
А не нада хранить все сиды в одном массиве. Для этого в мемкеше ключи придумали ;)

-~{}~ 04.07.08 01:06:

ЗЫ: а что, если один хит пользователя потеряется, это будет так ужасно? =)))
тогда грохнется все сессия пользователя, а если писать не в массив, то точное число онлайн не отследить.
я подумал и решил что действительно лучше испольховать базу данных
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Обратите внимание на слова
точное число онлайн
Стандартными средствами ты его не можешь узнать в принципе, по определению.
Все, что ты можешь - это считать количество сессий на php, по которым были запросы на скрипты за последние Х минут.

Правильный вопрос - "Как на php лучше реализовать учет ... ".
Если "проще" значит "лучше", как в 90% случаев, - то лучше через базу.

Я делал через memcached - у него есть замечательная способность авто-экспайрить данные, что как нельзя лучше подходит сессиям, и меньше проблем с переполнением.
А в mysql надо прописывать уборку старых сессий, настраивать размер таблицы memory, и вляпываться или в table full, или в своп системы.

It's not rocket science, пишется за несколько часов любым способом.
 

kabachok

Новичок
Автор оригинала: grigori
Обратите внимание на слова

Стандартными средствами ты его не можешь узнать в принципе, по определению.
Все, что ты можешь - это считать количество сессий на php, по которым были запросы на скрипты за последние Х минут.

Правильный вопрос - "Как на php лучше реализовать учет ... ".
Если "проще" значит "лучше", как в 90% случаев, - то лучше через базу.

Я делал через memcached - у него есть замечательная способность авто-экспайрить данные, что как нельзя лучше подходит сессиям, и меньше проблем с переполнением.
А в mysql надо прописывать уборку старых сессий, настраивать размер таблицы memory, и вляпываться или в table full, или в своп системы.

It's not rocket science, пишется за несколько часов любым способом.
у меня сессии хранятся как раз в memcache, и массив как раз нужен чтобы их грохать при истечении, а числе сесий в memcache посчитать проблематично, для этого и нужен массив, ну или как уже выяснили - база.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Автор оригинала: kabachok
массив как раз нужен чтобы их грохать при истечении
RTFM : Parameter expire is expiration time in seconds
"их" не надо "грохать", надо лишь иногда проверять существование записей и сохранять их кол-во
(щас опять поругают что разжевал)
 

kabachok

Новичок
Автор оригинала: grigori
RTFM : Parameter expire is expiration time in seconds
"их" не надо "грохать", надо лишь иногда проверять существование записей и сохранять их кол-во
(щас опять поругают что разжевал)
вам не надо, а мне надо :)
мануал я читал, по истечении времени, обьект продолжает висеть в памяти и удаляется только при следующем обращении к нему, т.е. проверка истек ибьект или нет, происходит в момент обращения к нему. Таким образом посчитать колличество активных сессий не возможно
в массиве memcache_get_stats() curr_items (Current number of items stored by the server) указывает общее число обектов сохраненных на сервере, в это колличество входят и просроченные обьекты. А если обьект "грохнуть", то он сразу исчезнет.
 

fixxxer

К.О.
Партнер клуба
kabachok
и где же в мануале написаны такие восхитительные вещи?
 

kabachok

Новичок
Автор оригинала: fixxxer
kabachok
и где же в мануале написаны такие восхитительные вещи?
запиши 100 обьектов, и потом смотри memcache_get_stats(), не обращаясь к этим обьектам, они не исчезнут после истечения отведенного времени
 

fixxxer

К.О.
Партнер клуба
а, ну в такой формулировке конечно :))
попробуй по другим ключикам посетить в те же слабы, не обращаясь к этим твоим "ста";)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
WP
автоудаление записей таблицы по времени???
я понимаю, что можно удалять записи, в которых timestamp>$x, но это не совсем "авто" ...
kabachok ну не всегда есть настроение объяснять, когда ты видишь то, что хочеш прочесть, а не то, что написано ...
 
Сверху