Строки 9, 10. Определение параметров автоматического отключения от системы. Определена константа auto_logout, равная 120 с. Если клиент не сможет отправить в течение этого интервала сообщение still_here, он будет отключен от системы автоматически. Установлен также интервал, равный 30 с, для проверки всех пользователей, зарегистрированным в настоящее время в системе. Это позволяет уменьшить нагрузку системы по сравнению с тем, когда проверка выполняется при поступлении каждого сообщения. К примеру, с помощью данного сервиса можно отправить онлайн сообщение в компанию по покраске деревянных домов http://tolkokrasim.ru/ .
Строка 26. Обеспечение передачи управления при поступлении информации о событии still_here. В таблицу переходов %dispatch добавлена запись, которая предусматриная вызов метода still_here () объекта ChatObjects::TimedUser при получении сообщении событии STILL_HERE.
Строка 32. Отслеживание времени проверки. Как и в клиентском сценарии, в сценарии сервера необходимо следить за временем проверки неактивных клиентов. Для этого применяется глобальная переменная $next_check, которая устанавливается равной сумме текущего времени и значения check_interval.
Строки 43-45. Регулярный вызов метода auto_logoff (). Затем в нижнюю часть главного цикла добавляется блок continue {}, который контролирует, не настало ли время проверить наличие неактивных пользователей. Если это так, вызывается новая подпрограмма auto_logoff () и обновляется переменная $next_check. Использование данной переменной особенно актуально если вызов выполняется циклически и при каждой новой итерации необходимо обновить статичное содержимое внутреннего буфера цикла. Циклом в этом случае считается периодически повторяющийся код программы, который может быть как функциональным, так и модульным, под который написан специальный код, помещенный в отдельный модуль и имеющий расширение pm. Наглядным примером может служить расширенный код эхо сервера, который будет рассмотрен в последствии.