знаете, раз уж вы тут такие велосипеды начали строить (не, некоторые методы очень хороши), то я, в порядке бреда, предложил бы сделать это на джаббере. просто интересно как воспримете идею =) и вам как бы кеш вообще не нужен? кешируйте на минуту хотя бы, один юзер спросит базу - остальные за минуту выймут из кеша и по новой. в идеале на 5 мин.
Я уже говорил как лучше всего делать... Js интервал на стороне пользователя и сервер. Когда интервала не будет то и пользователя не будет. Если интервал появился, то и пользователь появился... Повозиться придется, однозначно, но лучше решения не найти))) Да и вообще на фиг оно надо?)
во, кстати, идея....я выкладываю задачу у себя на сайте, и тот кто предложит самое красивое и быстрое решение, получает 100 рублей.....ась? )
Dmitriy A. Arteshuk, /var/lib/php5 интересный путь! а сессии там в принципе работают? может они через APC или еще какой хандлер вместо файлов? P.S. хостинг TIMEWEB ? они ебанулись там слегка, всякие странности случаются
Почитал я и понял, что наверно скрипт, который я выложил в первом посте, надо переделать для работы с БД и будет мне счастье. А что бы сильно скачки счетчика (если они будут) не кидались в глаза - обновлять скрипт аяксом 1 раз в мину-две. Или вообще не обновлять, хоть серверу легче дышать станет
кажется я знаю почему файлы сессий в /var/lib/php5 невозможно посмотреть: по крайней мере на моем тестовом Debian у этой папки владелец root, а биты rwx-wx-wx т.е. писать в папку можно, читать нет, glob() и любая другая похожая функция не может прочитать папку. элегантно! надеюсь сборщик мусора работает из под рута, иначе всё слишком тонко выйдет )))
я то вообще на шаредхостинге эту папку глянуть не могу ( локально все чудно пишется и читается... ну и владелец и права то же вроде бы понятно, иначе каждый желающий возьмет да прочитает...
эксперимент показал, что если вообще нигде не задан явно session.save_path, то он становится равен /var/lib/php5 и тогда вот описанные симптомы. ок, будем считать, что рецепт совсем никуда не годится, т.к. очень хрупкий.
Такие штуки, которые обновляются очень часто и при этом особой ценности не имеют - лучше хранить в оперативке, а не в файлах. 100 юзеров в онлайне - это 10 одних только ajax-запросов в секунду, а каждый запрос такой запрос - это перезапись файла. 10 раз в секунду файл обновляется... Жёсткий диск так скоро запросится на пенсию )
Ну... жесткий диск - это проблема хостинг-провайдера ))) Я делаю новую версию сайта. Там обновление скрипта аяксом будет идти уже через 4,5 мин. В самом скрипте установлю таймаут 5 мин. Таким образом будет через 4,5 мин. обновляться время прикрученное к идентификатору сессии (если пользователь еще на странице) и если пользователь ушел - то через 5 мин. от последнего обновления его идентификатор сессии удалится с файла .dat. Этим самым будет проверяться онлайн и разгрузится сервер.