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

Поиск:

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


как то так
**


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

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



А чем состояния (то бишь) сессии не угодили.
Прав 
enoff, если конечно подходить с этой стороны, сделать демона и не морочить ... 
Smorodin, голову smile почему, да потому что если на каждого юзера делать демон или хостер даст по башке или у самого сервер гыкнет, так как скрипт отбирает памяти в 15 мб ЛЮБОГО размера кода (хоть один вывод Привет мир).
Отсюда прав enoff, если запускать то один единственный демон обработчик, который принимает (ожидает) запросы от клиента или сессиями. Кстати идентификация пользователя может быть тем же идентификатором сессии.

Цитата

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

Ни чего не мешает, просто если посмотреть со стороны клиента рождается не правильное проектирование, а так ни чего всего то при этом на сотню пользователей полтора гига памяти ...  smile 

Это сообщение отредактировал(а) Sentox - 5.9.2011, 18:28
PM MAIL   Вверх
Smorodin
Дата 6.9.2011, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



Sentox, откуда Вы взяли про демонов? =) Или для Вас любой работающий скрипт PHP = демон?


Цитата(Sentox @  5.9.2011,  21:27 Найти цитируемый пост)
так как скрипт отбирает памяти в 15 мб ЛЮБОГО размера кода (хоть один вывод Привет мир).


Код

hello, world!
Memory:
now: 256 Kb
max: 256 Kb


Код

sleep(20);
echo 'hello, world!<br>';
echo '<b>Memory:</b><br>now: '.floor(memory_get_usage(true)/1024).' Kb<br>max: '.floor(memory_get_peak_usage(true)/1024).' Kb';



Цитата(Sentox @  5.9.2011,  21:27 Найти цитируемый пост)
если посмотреть со стороны клиента рождается не правильное проектирование

Абсолютно ничего неправильного. XHR long-polling.



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


Бывалый
*


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

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



Имхо, ужос. Т.е. вы используете протокол http и хотите организовать игру с обратной связью. Т.е. при событии на сервере отправлять некое сообщение клиенту?

Имхо, это как то не правильно.


Опрашивайте сервер с определенной периодичностью на редмет событий с момента предыдущего запроса.
Или речь идет о серверном сценарии на php?

А вообще имхо. Правильное решение для таких игр. Сервер на сях. Флеш клиент устанавливает постоянное соединение с этим сервером. В серверной части один поток - собственно обработка игровой ситуации на сервере, другой/другие работают с клиентами.

Хотя может я собственно задачу не совсем понял.
PM MAIL WWW   Вверх
Smorodin
Дата 6.9.2011, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



Цитата(voral @  6.9.2011,  13:56 Найти цитируемый пост)
Хотя может я собственно задачу не совсем понял. 

Насколько я понял, ТС хочет отправить в бесконечный цикл сценарий на ПХП, к которому (к одному и тому же) подключаются 2 игрока (то есть 1 выполняемый сценарий обсуживает двух клиентов). 

Мнения разделились:
1) На сокет и сервер не на ПХП (то есть клиента без флеша не сделать)
2) Мое, но, возможно, неправильно понятое другими: XHR long-polling (периодично опрашивать, но при каждом опросе, если действия никакого не свершилось, "зависать" на Н секунд для более быстрой реакции клиента на событие, и предотвращения большого количества запросов)

Все согласились только с тем, что ТС надо пересмотреть подход к реализации..


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


Опытный
**


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

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



voral, один висящий скрипт на клиента будет производительнее, чем постоянно создавать новые соединения + в этом случае будут большие задержки с получением ответа от сервера. в любом случае выгоднее держать постоянное соединение, хотя бы с точки зрения клиента.
PM MAIL ICQ Skype GTalk   Вверх
Smorodin
Дата 6.9.2011, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



... выгоднее, если это умеет клиент... некоторым использовать тот же самый флеш не позволяет религия.


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


Опытный
**


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

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



Smorodin, про клиентскую выгоду - тут имел ввиду то, что игрок не будет долго ждать об извещении, что соперник походил  smile 
PM MAIL ICQ Skype GTalk   Вверх
Smorodin
Дата 6.9.2011, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



enoff, я понял. Я просто говорю, что когда нельзя из-за ограничений клиента использовать постоянные соединения, но подобная вещь нужна, приходит на помощь моя схема =)


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


Бывалый
*


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

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



Цитата(Smorodin @  6.9.2011,  11:15 Найти цитируемый пост)
Насколько я понял, ТС хочет отправить в бесконечный цикл сценарий на ПХП, к которому (к одному и тому же) подключаются 2 игрока (то есть 1 выполняемый сценарий обсуживает двух клиентов). 


Да согласен. Не тот подход к созданию игры.

А как два игрока к одному скрипту (точнее к одному процессу) напрямую? Т.е. если "мутить" на php то-что то типа такого:
1 скрипт. Обработка ситуации на сервере. Т.е анализирует шаги полученные от игроков. Обрабатывает математику ситуации засовывает в БД информацию. (В принципе, может быть все и без него)
2. скрипт работы с игроком. Получает от игрока информацию о сделаном ходе. И, должен получить информацию о ходе другого игрока (толи напрямую вставленную таким же скриптом от другого игрока толи обработанную серверным скриптом). Да можно поставить задержку, но во первых это некрасиво, имхо,  будет смотреться в глазах игрока - фигли у нас тут страница "зависла". А во вторых, это соединение совершенно не надежное - 100500 причин по которой оно может разорваться и ни кто кроме игрока жалеть не будет.




Цитата(enoff @  6.9.2011,  11:22 Найти цитируемый пост)
voral, один висящий скрипт на клиента будет производительнее, чем постоянно создавать новые соединения + в этом случае будут большие задержки с получением ответа от сервера. в любом случае выгоднее держать постоянное соединение, хотя бы с точки зрения клиента. 

Да только. Единственный "механизм" восстановления соединения в случае обрыва этого "постоянного" соединения F5 нажатая игроком.

В общем я сторонник написания таковых игр (где требуется обратная связь в реальном времени) не на php. А с технологиями позволяющими держать реально постоянное соединение.

Цитата(Smorodin @  6.9.2011,  11:40 Найти цитируемый пост)
... выгоднее, если это умеет клиент... некоторым использовать тот же самый флеш не позволяет религия. 

Это плохо когда в такие вещи вмешивается религия. Прикиньте какого монстра придется создать если религия позволит использовать исключительно php+ js + html если целью будет создать аналог каунтерстрайк  smile

К тому же вебсервер может иметь ограничение на число одновременных подкючений, т.е. игра будет "занимать линию надолго и безсмысленно"

Добавлено через 6 минут и 59 секунд
Цитата(enoff @  6.9.2011,  12:08 Найти цитируемый пост)
Smorodin, про клиентскую выгоду - тут имел ввиду то, что игрок не будет долго ждать об извещении, что соперник походил  

В случае написания сервера на С. И наличия реальных постоянных соединений. Ждать вообще не придётся. В случае со скриптами, придётся прогонять через базу. Т.е. пришел ход от игрока 1 - записали в базу - скрипт игрока 2 опросил базу - ввернул игроку 2.
Т.е. у нас кроме времени работы двух скриптов есть еще работа с сервером БД. В случае написания на сях - просто передаем сообщение в другой процесс (возможно и в базу запишем - но считывать точно не обязательно)
PM MAIL WWW   Вверх
Smorodin
Дата 6.9.2011, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



Цитата(voral @  6.9.2011,  16:31 Найти цитируемый пост)
Да можно поставить задержку, но во первых это некрасиво, имхо,  будет смотреться в глазах игрока - фигли у нас тут страница "зависла". А во вторых, это соединение совершенно не надежное - 100500 причин по которой оно может разорваться и ни кто кроме игрока жалеть не будет.

1) Делая на динамике страница вообще не перезагружается. Как и во всех играх, надпись: ожидание хода игрока: осталось 48 секунд, и работает чат (к примеру).
2) На клиенте - обработка ошибок. По таймауту ответ не пришел - отправляем снова запрос. Никаких проблем для пользователя. 

Цитата(voral @  6.9.2011,  16:31 Найти цитируемый пост)
100500 причин по которой оно может разорваться

С моим домашним интернетом работают только те игры, которые работают не на сокетах. Сокетные вылетают через каждых 5 минут. Так что вопрос еще спорный...


Цитата(voral @  6.9.2011,  16:31 Найти цитируемый пост)
Единственный "механизм" восстановления соединения в случае обрыва этого "постоянного" соединения F5 нажатая игроком.

Опять же - зависит от программиста клиента.

Цитата(voral @  6.9.2011,  16:31 Найти цитируемый пост)
Это плохо когда в такие вещи вмешивается религия. Прикиньте какого монстра придется создать если религия позволит использовать исключительно php+ js + html если целью будет создать аналог каунтерстрайк

Ну не будем тут говорить о таких больших играх =) С ними все понятно =) Но есть 100500 примеров использования того же флеша в браузерных "рюшечках", когда можно (+проще, +лучше) обходиться без него.

Цитата(voral @  6.9.2011,  16:31 Найти цитируемый пост)
К тому же вебсервер может иметь ограничение на число одновременных подкючений, т.е. игра будет "занимать линию надолго и безсмысленно"

При прямых руках (ну и от ситуации зависит, конечно) производительность веб-сервера с long-xhr может в разы превосходить сокетный. У сокетов тоже есть ограничения, и память кушать они тоже любят...

Цитата(voral @  6.9.2011,  16:31 Найти цитируемый пост)
В случае написания на сях - просто передаем сообщение в другой процесс (возможно и в базу запишем - но считывать точно не обязательно) 

Еще раз повторюсь: зависит от платформы клиента. Если клиент на html+js, то без разницы, на чем Вы пишите сервер. Браузеры еще не научились адекватно работать с web-socket. Года через два - скорее всего. Но не сегодня.

Добавлено через 45 секунд
Цитата(voral @  6.9.2011,  16:31 Найти цитируемый пост)
если "мутить" на php то-что то типа такого

то, что я описывал на 1 странице.


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


как то так
**


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

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



Цитата(Smorodin @ 6.9.2011,  09:52)
Sentox, откуда Вы взяли про демонов? =) Или для Вас любой работающий скрипт PHP = демон?


Цитата(Sentox @  5.9.2011,  21:27 Найти цитируемый пост)
так как скрипт отбирает памяти в 15 мб ЛЮБОГО размера кода (хоть один вывод Привет мир).


Код

hello, world!
Memory:
now: 256 Kb
max: 256 Kb


Код

sleep(20);
echo 'hello, world!<br>';
echo '<b>Memory:</b><br>now: '.floor(memory_get_usage(true)/1024).' Kb<br>max: '.floor(memory_get_peak_usage(true)/1024).' Kb';



Цитата(Sentox @  5.9.2011,  21:27 Найти цитируемый пост)
если посмотреть со стороны клиента рождается не правильное проектирование

Абсолютно ничего неправильного. XHR long-polling.

Не не не, !!!
Память у хостера забирается, и смотрится от него. Сама машина php резервирует память а то что Вы предоставили это уже машина PHP Вам предоставляет реальное использование. Фактическое резервирование , вот что хостеру нужно.
PM MAIL   Вверх
Smorodin
Дата 6.9.2011, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



ВПС: 1Г оперативы, 1Г проц держит 200 активных подобных соединений без изменений показателей загрузки впски. Максимум спрогнозировать сложно, сейчас на ней вертится несколько приложений общей нагрузкой 1000-1500 в пик, показатели свыше 30% не поднимаются.

Добавлено через 1 минуту и 53 секунды
И не думаю, что ВПС жила бы все еще, если б потребляла 15 метров на каждого. Что-то Вы слишком страшное рассказываете.

Добавлено через 4 минуты и 37 секунд
В соседней теме тоже треш  smile 


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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