Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> цикл while выполняется только 30 секунд 
:(
    Опции темы
supervladislav
Дата 2.9.2011, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



скажите  я пишу сценарий серверной пошаговой игры ,управляющая конструкция основана на цикле while 
дело в том что когда идёт ожидание когда походит пользователь цикл через 30 секунд выключается ,
скажите это можно как-то исправить ,а может так лучше вобще не делать???
PM MAIL   Вверх
Smorodin
Дата 2.9.2011, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 10.4.2006
Где: Пермь

Репутация: нет
Всего: 1



Цитата

Если времени на выполнение скрипта указанного в php.ini недостаточно, то:

set_time_limit(0); - ограничение снимается совсем.

2 варианта увеличения времени на выполнения скрипта:

1:  set_time_limit(60);

2: ini_set("max_execution_time", "60");

Время указывается в секундах. В примерах время выполнения равно 1 минуте.


Это сообщение отредактировал(а) Smorodin - 2.9.2011, 12:37


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
Evghenusi
Дата 2.9.2011, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 6
Всего: 15



а что делает ваш цикл 30 секунд? и зачем его держать так долго? (тонна инфы?)

Добавлено через 7 минут и 6 секунд
Цитата

while($livebot>0 or $liveuser>0){

управляющая конструкция 

}  


не вариант так проверять?
Цитата

управляющая конструкция 
if($livebot<=0 or $liveuser<=0) exit/return "идите на";  

PM WWW   Вверх
Smorodin
Дата 2.9.2011, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 10.4.2006
Где: Пермь

Репутация: нет
Всего: 1



Evghenusi, Вы не поняли сути. Автору топика надо реализовать _ожидание_. Для этого надо сделать цикл, который прервется только тогда, когда произойдет какое-то событие (как я понял, проверка на наличие события находится в цикле). Конечно, отправлять пхп в долгое выполнение - не совсем хорошая идея, но и я так частенько делаю... Это раз.

Во-вторых, 
supervladislav, http-запросы крайне не рекомендуется держать дольше 30 секунд (если вообще проходят...). Посмотрите в такой вариант: клиент отправляет на пхп запрос, в цикле проверяется время выполнения скрипта, если 25 секунд - возвращаем на клиент, что событий нет, и прекращаем работу скрипта. Клиент, получив такой ответ, тут же отправляет такой же запрос... И так далее по 25-30 секунд, пока все-таки событие не произойдет.
Если же реализовано на сокетах - то такой вариант, конечно, не подойдет...


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
MoLeX
Дата 2.9.2011, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Smorodin @  2.9.2011,  13:11 Найти цитируемый пост)
http-запросы крайне не рекомендуется держать дольше 30 секунд

интересная логика. почему?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
enoff
Дата 2.9.2011, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



Вы как это собираетесь сделать?
Бразуер посылает запрос, на сервере запускается скрипт, дальше по-вашему браузер должен послать, с пометкой "туда же", а сервер увидя особые отметки, не скрипт запустит по новому, а магическим образом передаст данные уже работающему экземпляру (который в цикле ждет непонятно чего)?
т.е. вы хотите сделать строго один запущенный скрипт на пользователя?
в цикле можно проверять в базе последние записи активности, но они должны быть сделаны другим скриптом, зачем тогда висеть этому?

ваш подход похоже настолько гениален, что даже бредовее реализацию не придумать  smile 

Все-так почитайте про HTTP, спустя нескольких лет программирования на php можно и посмотреть, что это такое  smile 
PM MAIL ICQ Skype GTalk   Вверх
Smorodin
Дата 2.9.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 10.4.2006
Где: Пермь

Репутация: нет
Всего: 1



Цитата(MoLeX @  2.9.2011,  16:41 Найти цитируемый пост)
интересная логика. почему? 

Браузеры могут оборвать через 30 секунд соединение (если речь о браузерах вообще). Могут и прокси. В общем, это рекомендательного характера - 25 секунд (+5 секунд на возможные задержки). У контакта, кстати, так и реализовано получение новых событий.
XHR long-polling решает эту проблему.

Добавлено @ 13:56
Цитата(enoff @ 2.9.2011,  16:49)
Вы как это собираетесь сделать?
Бразуер посылает запрос, на сервере запускается скрипт, дальше по-вашему браузер должен послать, с пометкой "туда же", а сервер увидя особые отметки, не скрипт запустит по новому, а магическим образом передаст данные уже работающему экземпляру (который в цикле ждет непонятно чего)?
т.е. вы хотите сделать строго один запущенный скрипт на пользователя?
в цикле можно проверять в базе последние записи активности, но они должны быть сделаны другим скриптом, зачем тогда висеть этому?

ваш подход похоже настолько гениален, что даже бредовее реализацию не придумать  smile 

Все-так почитайте про HTTP, спустя нескольких лет программирования на php можно и посмотреть, что это такое  smile

Советую перечитать мой пост. Я об А, Вы о Б.

Клиент посылает: дай_новые_события. Сервер ожидает 25 секунд появление события (если появило сразу - замечательно, выполнение заканчивается, если нет - ждем 25 секунд). Если событий не произошло - отправлем клиенту "новых_событий_нет" и заканчиваем работу скрипта. Клиент, получив команду "новых_событий_нет" - отправляет снова "дай_новые_события".

Это сообщение отредактировал(а) Smorodin - 2.9.2011, 13:59


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
enoff
Дата 2.9.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



Smorodin, в том и дело, что ТС изначально хочет не "клиент: дай мне новые события", а "сервер: пользователь походил?"
PM MAIL ICQ Skype GTalk   Вверх
supervladislav
Дата 2.9.2011, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Smorodin, спасибо за понимание , а вот на счёт того рвут ли броузеры соединение или нет ,зы где бы почитать достоверной инфы.

Добавлено через 5 минут и 17 секунд
enoff, т.е. вы хотите сделать строго один запущенный скрипт на пользователя?
да именно так ,на каждого пользователя ,я не очень понял что вы выше имели ввиду выше этого)))
Скрипт в цикле ждёт запроса с flash клиента.
PM MAIL   Вверх
Smorodin
Дата 2.9.2011, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 10.4.2006
Где: Пермь

Репутация: нет
Всего: 1



enoff, что мешает в моих сообщениях "дай_новые_события" заменить на "дай_ответ_сходил_ли_юзер_и_если_да_то_как_и_что_мне_делать_дальше_и_вообще_какой_смысл_жизни" ?  smile 


supervladislav, факторов много: прокси, фаерволы, ограничение JSONP стоит 30 секунд. Поэтому "висяки" на 25 секунд - проверенная и одобренная мировая практика.

Добавлено через 1 минуту и 43 секунды
enoff, только сейчас заметил, что Ваша фраза - 
Цитата(enoff @  2.9.2011,  17:04 Найти цитируемый пост)
не "клиент: дай мне новые события", а "сервер: пользователь походил?" 

подразумевает, что сервер будет разговаривать сам с собой?  smile Зачем серверу где-то что-то спрашивать такое, которое он и сам знает? Я упорно не понимаю логики ни в одном Вашем сообщении.

Добавлено через 2 минуты и 9 секунд
Цитата(supervladislav @  2.9.2011,  17:05 Найти цитируемый пост)
спасибо за понимание , а вот на счёт того рвут ли броузеры соединение или нет ,зы где бы почитать достоверной инфы. 

http://yandex.ru/yandsearch?text=XHR+long-...;lr=50&fs=1


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
enoff
Дата 2.9.2011, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



Цитата(supervladislav @  2.9.2011,  14:05 Найти цитируемый пост)
enoff, т.е. вы хотите сделать строго один запущенный скрипт на пользователя?
да именно так ,на каждого пользователя ,я не очень понял что вы выше имели ввиду выше этого)))
Скрипт в цикле ждёт запроса с flash клиента. 


Smorodin, поняли? Нужно не создавая новые соединения, крутясь в цикле реагировать на действия клиента. Тут только остается самим с собой поговорить, чуда-то не произойдет  smile 
PM MAIL ICQ Skype GTalk   Вверх
Smorodin
Дата 2.9.2011, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 10.4.2006
Где: Пермь

Репутация: нет
Всего: 1



Цитата(supervladislav @  2.9.2011,  17:05 Найти цитируемый пост)
т.е. вы хотите сделать строго один запущенный скрипт на пользователя?
да именно так ,на каждого пользователя ,я не очень понял что вы выше имели ввиду выше этого)))
Скрипт в цикле ждёт запроса с flash клиента. 

А вот это неправильно. Флеш отправляет на пхп информацию о ходе. Сервер принимает. И второму игроку (который в это время висит на лонг-пулинге) отправляет. Теперь первый повисает, а второй при действии пользователя отправляет информацию о ходе...

И вообще со флешем тогда уж лучше перенести на сокеты.

Добавлено через 13 минут и 28 секунд
Цитата(enoff @  2.9.2011,  17:20 Найти цитируемый пост)
Нужно не создавая новые соединения, крутясь в цикле реагировать на действия клиента. Тут только остается самим с собой поговорить, чуда-то не произойдет  smile  

Ну все же понимают, что это бред?  smile 


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
enoff
Дата 2.9.2011, 20:52 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



Smorodin, что ж вы такой серьезный-то...  smile 
ТС занимается программированием несколько лет. и с завидным постоянством от него поступают подобные идеи  smile 
на советы читать книги и маны не реагирует. Предлагая бредовые идеи таки можно раскрыть суть вопроса, как показывает практика:
Цитата(supervladislav @  2.9.2011,  14:05 Найти цитируемый пост)
да именно так


понять ход мыслей супервладислава, мыслить как супервладислав, и переубедить супервладислава насчет его неверного пути - это ого-го какая задача  smile 

Цитата(Smorodin @  2.9.2011,  14:22 Найти цитируемый пост)
Ну все же понимают, что это бред?

Цитата(supervladislav @  2.9.2011,  14:05 Найти цитируемый пост)
да именно так

я просто сказал то, чего хочет ТС, понятным вам языком. Я же не говорил, что это возможно  smile 

эх, раньше было в подобных топиках жарче  smile 

а по теме:
Цитата(Smorodin @  2.9.2011,  14:22 Найти цитируемый пост)
А вот это неправильно

вот и весь ответ на вопрос топика smile

 smile 
PM MAIL ICQ Skype GTalk   Вверх
Smorodin
Дата 4.9.2011, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 10.4.2006
Где: Пермь

Репутация: нет
Всего: 1



enoff,  smile понял... надо чаще сюда заходить =)


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
moscwich
Дата 4.9.2011, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.9.2011
Где: Москва

Репутация: нет
Всего: нет



Конечно, так лучше не делать, ибо быдлокод (//К. О.)

Ну если все-таки очень хочется, то по понятным причинам такой bdsm лучше творить с пользовательскими ресурсами (я на JS намекаю).

Это сообщение отредактировал(а) moscwich - 4.9.2011, 20:32
PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1192 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.