Данная библиотека рассчитана на то, чтобы облегчить выполнение определенного действия в указанное время. Допустим, мы хотим выполнить какой-то запрос к базе, поменять дизайн на смене сезонов, или что-либо другое. Регистрируем это событие и оно ждет указанного времени. Как только время стукнет - скрипт будет ожидать первого обращения, чтобы выполнить нужный код. Архив на гуглокоде: http://code.google.com/p/deffered-event/downloads/list == Краткая инструкция == В архиве в директории DeferredEvent - сама либа. Остальное - это демонстрационный код. В файле dump.sql - запросы для создания двух таблиц - `DefferedEvents` и `messages`. Первая нужна для либы, вторая - используется в качестве примера. В файле init.php на 13 и 14 строках стоит поменять параметры подключения к базе данных. В корне два файла: reg.php и try.php. При вызове первого будет осуществлена регистрация событий. При каждом вызове try.php будет произведена попытка их выполнить, если стукнет нужное время. В data/ хранятся три файла, в которые будет производиться запись. Поставьте им соответствующие права доступа. Подробнее - в исходниках. Если что непонятно - спрашивайте, отвечу. Лицензия - LGPL PS. Интересует мнение опытных товарищей. Что скажете о качестве кода, о подходе и о читаемости? Что бы вы сделали не так. В общем, интересует здоровая критика
ну крон - штука, вроде, не кроссплатформенная, плюс я не нашел в интернете, как настраивать его во время выполнения скрипта. например через юзер-френдли админку. Подозреваю, что это можно сделать с помощью функции exec, но при может быть включен safe-mode. Более того, нашел в интернете, что крон - тоже не без багов. Ну и DeferredEvent то можно настроить под себя ровно настолько, насколько это надо
Я вот что подумал. Ведь отложенные события могут использоваться для таких вещей, для которых крон не подходит. Не нашел примера, но, помню, недавно обсуждали один из возможных вариантов увеличения количества ресурсов в онлайн игре. И, допустим, каждые десять секунд нужно вызывать запрос, который увеличит количество ресурсов у всех игроков. Крон для этого не подходит. Мы создаем класс события - оно увеличивает ресурс и регистрирует второе такое же событие. Да и вообще - онлайн игру можно сделать полностью на таком подходе, а не на подходе - ждать, пока дернут, а только потом измениться (в ОГейме перед тем, как изменять процент загрузки шахт надо было обновить страницу, иначе все время, пока она не обновлялась считалось, что шахты работали по только что измененному проценту. Кто играл - тот знает). Все - создание юнита, прилет флота, начало боя - регистрируется отложенными событиями и, как только хоть кто-то обновляет страницу, все события собираются в кучу и выполняются.
Так не интересно Это не альтернатива crontab. Фишка cron'а как раз в том, чтобы действия выполнялись даже если систему никто не трогает.
Ресуср не надо хранить, его надо расчитывать по формуле. Нужно фиксировать время и количество ресусра при последнем влияющем на него действии игрока. Например, потерял игрок 10hp - фиксируем, что у него осталось 90hp и таймстам этого события. Потом просто расчитывай востановление hp по прошедшему времени. И хоть каждую секунуд обновляй страницу - всегда будешь видеть актуальное значение =) При чем расчет можно делать вообще javasscript'ом, чтобы эта полоска росла у пользователя в реальном времени без всяких запросов.
у меня тоже такое было когда-то, но я успел удалить свое сообщение пока кто-то отвечал на мой некропост =).