Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

"Who is online"

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP
 
Автор Сообщение
Anderson

Завсегдатай


Зарегистрирован: 08.07.2006
Сообщения: 642
Откуда: localhost

СообщениеДобавлено: Чт Фев 22, 2007 10:34 am    Заголовок сообщения: "Who is online"
Ответить с цитатой

Итак, изобрел (если такого еще не было Smile ) я наконец новый механизм проверки "Who is online" для чатов (с обновлением каждые 10 секунд). Вот главный принцип.
1. На сайт вошел пользователь с каким-то именем/
2. В папке users/ создается файл с его именем, в который сыенарий записывает дату его входа + $timeout секунд -- "fwrite($f, time()+$timeout)" -- у себя я поставил $timeout равным 30.
3. Если файл существует, он перезаписывается. То есть, когда пользователь сидит в чате (пусть даже через dial-up), файл постоянно обновляется.
4. Если пользователь покинул сайт, и не заходит на него больше чем $timeout секунд, файл удаляется при входе следующего пользователя в чат.

Что делает мой сценарий (ему передано один параметр -- имя пользователя $username):

<?

// // открытие директории с именами
// открытие файла names/$username.txt, при существовании перезаписывание
// запись в файл -- fwrite($f, time()+30)
// удаление "устаревших" файлов в каталоге names/, то есть содержимое которых меньше вызова time() сейчас
// отображение совместимого каталога names/

?>

Вот и все. Ни сессий, ни "печенья", ни временных файлов. Вы, наверное, спросите: а в чате никого не будет, то есть
последний пользователь покинет чат, в каталоге users/ останеться "мусор"?
Нет проблем. Он будет удален при входе следующего пользователя, ничего страшного, если он будет там лежать некоторое время "просроченный" Smile

И еще на заметку. Изменяйте $timeout на ваш рассудок. Например, если у вас будут посетители с одним АДСЛ, то смело ставьте $timeout равным 15.
_________________
ArchLinux + Enlightenment 17 (E17)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение anderson.dunai@gmail.com Моб. телефон ICQ Number
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис