Выполнение действий на сервере без ввода данных пользователем в Websocket - PullRequest
1 голос
/ 10 августа 2011

Итак, у меня есть настройка сервера websocket и работа на PHP (если быть точным, CodeIgniter, хотя это не должно иметь значения ...). Я хотел бы, чтобы сервер выполнял функции очистки каждые n секунд без использования заданий CRON, если это вообще возможно. По сути, я хочу, чтобы уже работала серверная функция websocket, чтобы проверять пользователей, которые ничего не делали за x раз, и автоматически «пнуть» их, закрыв сокет.

Из того, что я видел по всему Интернету, единственный способ выполнить действие сервера - это когда пользовательский ввод получен ... нет способа запустить функцию сервера автоматически ...

Идеи? * * 1005

Спасибо!

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Вероятно, лучший способ сделать это - реализовать демон.

Вот учебное пособие и отличный класс для начала: http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/

Я использую этот класс нанесколько демонов, которые выполняют аналогичные задачи.Они бегают неделями, и у меня нет проблем.Вы должны быть внимательны к использованию памяти.Убедитесь, что у вас нет анонимных функций, которые никогда не будут уничтожены сборщиком мусора, например.

0 голосов
/ 10 августа 2011

Я ничего не знаю о вашем "сокетсервере", но он звучит как сервер, написанный на Java, или что-то похожее, и я бы предположил, что вы написали это сами (или, по крайней мере, имеете источник).Что вы можете сделать, это запустить поток, выполняющий что-то вроде следующего (это написано на php, потому что я не очень хорошо знаю java)

while(true) {
$oldTime = time();
while(time()-$oldTime < 10) continue;
clean();
up();
functions();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...