![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
скажите я пишу сценарий серверной пошаговой игры ,управляющая конструкция основана на цикле while
дело в том что когда идёт ожидание когда походит пользователь цикл через 30 секунд выключается , скажите это можно как-то исправить ,а может так лучше вобще не делать??? |
|||
|
||||
Smorodin |
|
|||
![]() Добрейший ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 10.4.2006 Где: Пермь Репутация: нет Всего: 1 |
Это сообщение отредактировал(а) Smorodin - 2.9.2011, 12:37 -------------------- Сделать можно все, только вопрос - когда? |
|||
|
||||
Evghenusi |
|
||||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: 6 Всего: 15 |
а что делает ваш цикл 30 секунд? и зачем его держать так долго? (тонна инфы?)
Добавлено через 7 минут и 6 секунд
не вариант так проверять?
|
||||
|
|||||
Smorodin |
|
|||
![]() Добрейший ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 10.4.2006 Где: Пермь Репутация: нет Всего: 1 |
Evghenusi, Вы не поняли сути. Автору топика надо реализовать _ожидание_. Для этого надо сделать цикл, который прервется только тогда, когда произойдет какое-то событие (как я понял, проверка на наличие события находится в цикле). Конечно, отправлять пхп в долгое выполнение - не совсем хорошая идея, но и я так частенько делаю... Это раз.
Во-вторых, supervladislav, http-запросы крайне не рекомендуется держать дольше 30 секунд (если вообще проходят...). Посмотрите в такой вариант: клиент отправляет на пхп запрос, в цикле проверяется время выполнения скрипта, если 25 секунд - возвращаем на клиент, что событий нет, и прекращаем работу скрипта. Клиент, получив такой ответ, тут же отправляет такой же запрос... И так далее по 25-30 секунд, пока все-таки событие не произойдет. Если же реализовано на сокетах - то такой вариант, конечно, не подойдет... -------------------- Сделать можно все, только вопрос - когда? |
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
интересная логика. почему? -------------------- Amazing ![]() |
|||
|
||||
enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
Вы как это собираетесь сделать?
Бразуер посылает запрос, на сервере запускается скрипт, дальше по-вашему браузер должен послать, с пометкой "туда же", а сервер увидя особые отметки, не скрипт запустит по новому, а магическим образом передаст данные уже работающему экземпляру (который в цикле ждет непонятно чего)? т.е. вы хотите сделать строго один запущенный скрипт на пользователя? в цикле можно проверять в базе последние записи активности, но они должны быть сделаны другим скриптом, зачем тогда висеть этому? ваш подход похоже настолько гениален, что даже бредовее реализацию не придумать ![]() Все-так почитайте про HTTP, спустя нескольких лет программирования на php можно и посмотреть, что это такое ![]() |
|||
|
||||
Smorodin |
|
|||
![]() Добрейший ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 10.4.2006 Где: Пермь Репутация: нет Всего: 1 |
Браузеры могут оборвать через 30 секунд соединение (если речь о браузерах вообще). Могут и прокси. В общем, это рекомендательного характера - 25 секунд (+5 секунд на возможные задержки). У контакта, кстати, так и реализовано получение новых событий. XHR long-polling решает эту проблему. Добавлено @ 13:56
Советую перечитать мой пост. Я об А, Вы о Б. Клиент посылает: дай_новые_события. Сервер ожидает 25 секунд появление события (если появило сразу - замечательно, выполнение заканчивается, если нет - ждем 25 секунд). Если событий не произошло - отправлем клиенту "новых_событий_нет" и заканчиваем работу скрипта. Клиент, получив команду "новых_событий_нет" - отправляет снова "дай_новые_события". Это сообщение отредактировал(а) Smorodin - 2.9.2011, 13:59 -------------------- Сделать можно все, только вопрос - когда? |
|||
|
||||
enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
Smorodin, в том и дело, что ТС изначально хочет не "клиент: дай мне новые события", а "сервер: пользователь походил?"
|
|||
|
||||
supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
Smorodin, спасибо за понимание , а вот на счёт того рвут ли броузеры соединение или нет ,зы где бы почитать достоверной инфы.
Добавлено через 5 минут и 17 секунд enoff, т.е. вы хотите сделать строго один запущенный скрипт на пользователя? да именно так ,на каждого пользователя ,я не очень понял что вы выше имели ввиду выше этого))) Скрипт в цикле ждёт запроса с flash клиента. |
|||
|
||||
Smorodin |
|
||||
![]() Добрейший ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 10.4.2006 Где: Пермь Репутация: нет Всего: 1 |
enoff, что мешает в моих сообщениях "дай_новые_события" заменить на "дай_ответ_сходил_ли_юзер_и_если_да_то_как_и_что_мне_делать_дальше_и_вообще_какой_смысл_жизни" ?
![]() supervladislav, факторов много: прокси, фаерволы, ограничение JSONP стоит 30 секунд. Поэтому "висяки" на 25 секунд - проверенная и одобренная мировая практика. Добавлено через 1 минуту и 43 секунды enoff, только сейчас заметил, что Ваша фраза -
подразумевает, что сервер будет разговаривать сам с собой? ![]() Добавлено через 2 минуты и 9 секунд
http://yandex.ru/yandsearch?text=XHR+long-...;lr=50&fs=1 -------------------- Сделать можно все, только вопрос - когда? |
||||
|
|||||
enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
Smorodin, поняли? Нужно не создавая новые соединения, крутясь в цикле реагировать на действия клиента. Тут только остается самим с собой поговорить, чуда-то не произойдет ![]() |
|||
|
||||
Smorodin |
|
|||
![]() Добрейший ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 10.4.2006 Где: Пермь Репутация: нет Всего: 1 |
А вот это неправильно. Флеш отправляет на пхп информацию о ходе. Сервер принимает. И второму игроку (который в это время висит на лонг-пулинге) отправляет. Теперь первый повисает, а второй при действии пользователя отправляет информацию о ходе... И вообще со флешем тогда уж лучше перенести на сокеты. Добавлено через 13 минут и 28 секунд
Ну все же понимают, что это бред? ![]() -------------------- Сделать можно все, только вопрос - когда? |
|||
|
||||
enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
Smorodin, что ж вы такой серьезный-то...
![]() ТС занимается программированием несколько лет. и с завидным постоянством от него поступают подобные идеи ![]() на советы читать книги и маны не реагирует. Предлагая бредовые идеи таки можно раскрыть суть вопроса, как показывает практика: понять ход мыслей супервладислава, мыслить как супервладислав, и переубедить супервладислава насчет его неверного пути - это ого-го какая задача ![]() я просто сказал то, чего хочет ТС, понятным вам языком. Я же не говорил, что это возможно ![]() эх, раньше было в подобных топиках жарче ![]() а по теме: вот и весь ответ на вопрос топика ![]() ![]() |
|||
|
||||
Smorodin |
|
|||
![]() Добрейший ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 10.4.2006 Где: Пермь Репутация: нет Всего: 1 |
enoff,
![]() -------------------- Сделать можно все, только вопрос - когда? |
|||
|
||||
moscwich |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 4.9.2011 Где: Москва Репутация: нет Всего: нет |
Конечно, так лучше не делать, ибо быдлокод (//К. О.)
Ну если все-таки очень хочется, то по понятным причинам такой bdsm лучше творить с пользовательскими ресурсами (я на JS намекаю). Это сообщение отредактировал(а) moscwich - 4.9.2011, 20:32 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |