Здравствуйте форумчане. Я тут человек новый, поэтому прошу не судить строго за, возможно, примитивные вопросы.
Проблема в следующем. В контексте создания браузерной игры столкнулся с задачей необходимости обработки данных на сервере в ситуациях когда от клиентов не поступает запростов вообще, но при этом обрабатывать данные нужно. Банальный пример: Я отправляю свою армию на врага и прийти она должна допустим через 3 часа. Рассматривается ситуация, когда ни меня ни противника(на которого я отправил армию) нету у компа вообще. Но тем не менее, должен отработать скрипт который обсчитает битву и запишет в базу данных всю информацию о результатах данного события(битвы).
Я только недавно начал изучать PHP и пока у меня нет идеи как реализовать такую задачу. У меня пока сложилось жесткое представление об работе PHP связанное с четкой логикой: запрос клиента -> ответ сервера. Т.е. у меня каждая страница делится на 2 состовляющие:
1) html(php) страница - которую показываем клиенту.
2) php страница обрабатывающая страницу из пункта 1.
(иногда пункты 1 и 2 совмещены физически в одной странице)
Казалось бы все хорошо, но начали возникать на серверной стороне задачи, которые необходимо выполнять не по запросу клиента, а в определенные моменты времени.
Я немного погорячился, сказав что нету идеи. Идея есть и я ее даже реализовал и она работает следующим образом. Все события которые должны произойти сами по себе в некоторое определенное время, независимо от запроса пользователя, я записываю в специальную таблицу MySQL. Одно из полей в этой таблице - это время, когда надо обработать данное событие. Дальше я сделал страничку не входящую в сайт самой игры, но каждые несколько секунд (через JavaScript таймер ) она обращается к некому php файлу. В этом файле делается запрос к таблице событий и если в ней есть записи событий время которых настало, они в цикле обрабатываются соответствующими функциями, после чего результаты записываются в базу.
Вообщем задачу то я выполнил, но как-то это все каряво выглядит. Наверняка в PHP есть возможность все это реализовать без левой странички, непрерывно бомбящей сервер своими запросами. Мне кажется что все это можно реализовать гораздо проще, и красивее какими-нить возможностями PHP про которые я еще не знаю. Кто-нибудь может мне посоветовать в какой области копать? Наверняка многие уже сталкивались со схожими задачами.
Заранее благодарен за ответы. (Отредактировано автором: 30 Июня, 2009 - 14:53:35)
|