Мне интересен вопрос, о том как делаются "sheduled tasks" в веб-программировании. Для примера возьмем многочисленные онлайн игры в которых нападение одного игрока на другого происходит через некоторое время не зависимо от того в игре атакующий игрок или нет.
Как такое реализовать? Куда смотреть? Что читать?
Заранее благодарю
Спустя 8 минут, 39 секунд (20.03.2011 - 23:12) sergeiss написал(а):
Правильно пишется "scheduled" - в заголовке я тебе поправил.
Спустя 2 минуты, 25 секунд (20.03.2011 - 23:15) inpost написал(а):
wow9995
Ничего не понятно =) Видимо стоит почитать, что это за термин такой выдуманный =)
Ничего не понятно =) Видимо стоит почитать, что это за термин такой выдуманный =)
Спустя 4 минуты, 52 секунды (20.03.2011 - 23:20) wow9995 написал(а):
Опишу подробнее приведенный пример с игрой.
Ваш ПЕРСОНАЖ делает нападение на ИГРОК выбором ИГРОК со списка и нажатием кнопки НАПАСТЬ.
В связи с тем что ПЕРСОНАЖ и ИГРОК территориально размещены в разных концах игрового мира нападение не может быть мгновенным. Соответственно у ПЕРСОНАЖ появляется обратный отсчет. И НАПАДЕНИЕ произойдет по окончанию отсчета НЕ ЗАВИСИМО от того был ли ПЕРСОНАЖ в игре (обновлял ли он страницу или нет)
Ваш ПЕРСОНАЖ делает нападение на ИГРОК выбором ИГРОК со списка и нажатием кнопки НАПАСТЬ.
В связи с тем что ПЕРСОНАЖ и ИГРОК территориально размещены в разных концах игрового мира нападение не может быть мгновенным. Соответственно у ПЕРСОНАЖ появляется обратный отсчет. И НАПАДЕНИЕ произойдет по окончанию отсчета НЕ ЗАВИСИМО от того был ли ПЕРСОНАЖ в игре (обновлял ли он страницу или нет)
Спустя 3 минуты, 10 секунд (20.03.2011 - 23:23) neadekvat написал(а):
Такое чувство, будто машинный перевод сейчас прочитал. Особенно второе предложение.
Но если пытаться найти логику.. то как игрок может биться с тем, кто находится на другом конце карты, либо который вообще отсутствует в игре?
Но если пытаться найти логику.. то как игрок может биться с тем, кто находится на другом конце карты, либо который вообще отсутствует в игре?
Спустя 1 минута, 45 секунд (20.03.2011 - 23:25) Snus написал(а):
wow9995
Записывай время нападения + время до истечения в БД, при загрузке страницы доставай это значение и делай обратный отчет времени time() - время из БД
Записывай время нападения + время до истечения в БД, при загрузке страницы доставай это значение и делай обратный отчет времени time() - время из БД
Спустя 33 секунды (20.03.2011 - 23:25) inpost написал(а):
Есть таблица TASKER, куда все действия заносятся (на такой то минуте - такое то действие). Есть скрипт, который кроном загружается раз в маленький период и проверяет задачник, если надо какое-то действие - он его выполняет. Есть пользователь со своей сессией, откуда тягаются данные из сервера о конкретной ситуации. Например там указываешь, что на данный момент данный пользователь дожидается из задачника действие, когда срок наступил - либо запустился скрипт и выполнил всё, что надо, либо перебросил игрока на страницу поединка. Если скрипт сам выполнил без участия игрока, то достаточно крона, если пользователя перебросить на какую-то страницу, то там Ajax ом посылать запросы с интервалом на сервер и проверять, пора ли перебросить пользователя на отведённую ему страницу для поединка.
Читать: PHP + AJAX + MySQL + Крон.
Читать: PHP + AJAX + MySQL + Крон.
Спустя 41 секунда (20.03.2011 - 23:26) neadekvat написал(а):
Цитата (Snus @ 20.03.2011 - 23:25) |
и делай обратный отчет времени time() - время из БД |
Только тогда уж время из бд - time()
Спустя 1 минута, 26 секунд (20.03.2011 - 23:27) Snus написал(а):
Цитата (neadekvat @ 20.03.2011 - 20:26) |
Только тогда уж время из бд - time() |
Ну да ) Очепяточка