Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Какой javascript движок мне следует взять? (https://javascript.ru/forum/misc/33009-kakojj-javascript-dvizhok-mne-sleduet-vzyat.html)

sirjay 07.11.2012 12:45

Какой javascript движок мне следует взять?
 
Всем привет

Я собираюсь написать сайт знакомств на основе онлайн игры. На сайте по началу будет регистрация пользователей, чат и сама игра.

Суть игры: пользователь задает вопрос и после этого игра начинается между 6 игроками (3 парня на 3 девушки). Парни отвечают на вопросы девушек и наоборот. В конце они могут выбрать друг друга, если захотят.

Как пример flash приложение вконтакте "спросил увидел полюбил". Главная страница/задать вопрос: http://cossa.ru/upload/medialibrary/2f0/Clearasil-2.jpg
Игра: http://vkdiz.ru/uploads/posts/2011-0...12_25.0823.png
Выбор: http://onlain-love.ru/wp-content/upl...l-polyubil.png


Так вот, я отлично знаю html, php, mysql, немного js, ajax, jQuery. Какой мне следует движок/framework взять за основу построения системы? Может уже есть js библиотеки специально для таких вещей?

К примеру, я читал про Ajax Push Engine (http://www.ape-project.org/). А может мне стоит на чистом jQuery со всякими методами .post писать сайт? Хочу сделать этот проект популярным, поэтому пользователей и нагрузка будет много.

Спасибо! :)

Skipp 07.11.2012 13:59

Могу предложить сокеты

sirjay 08.11.2012 12:56

Спасибо за ответ.

Skipp, мне очень нужен твой ответ на следующий вопрос: зачем создавать реал-тайм сервер, если можно просто воспользоваться jQuery+php+mysql?

Я не понимаю как сервер будет устроен. Я прочитал как его включить у себя на компьютере, но как включить в интернет? Например, надо сделать чат на NodeJS. Где будет храниться инфа пользователей и сообщений? ведь не в mysql?

Skipp 08.11.2012 13:46

Цитата:

Сообщение от sirjay
jQuery+php+mysql?

Забавно Javascript уже даже в цепочку не входит, хахах...
Цитата:

Сообщение от sirjay
Я не понимаю как сервер будет устроен.

Ты видимо пока ещё совсем мало чего понимаешь, без обид.
Цитата:

Сообщение от sirjay
но как включить в интернет?

Это меня просто убило:)

Спасибо, посмеялся, вопросы из серии как мне построить машину, будь более конкретен.

Это не всё так просто как кажется на первый взляд...

Dim@ 08.11.2012 14:40

Цитата:

Сообщение от sirjay
зачем создавать реал-тайм сервер, если можно просто воспользоваться jQuery+php+mysql?

долго угарал над этими словами :lol:, где по твоему бедет php и mysql?
к слову
JavaScript - клиентская часть,
PHP + MySQL - серверная часть

DjDiablo 08.11.2012 14:59

Хм пажалуй jquery на клиенте
На серве NodeJs как вариант
+ взаимодействие по сокетам.

APE c jquery кстатии могут дружить.

sirjay 09.11.2012 00:30

Все посмеялись, а никто не ответил точно.

Ладно, если взять jquery+php+mysql, то в jquery нужно поставить таймер, например, каждые 3 секунды обновлять чат, посылая запросы в mysql.

Если в данный момент 5000+ пользователей, то будет ли все хорошо работать? без тормозов и сбоев.

Hoshinokoe 09.11.2012 01:15

sirjay,
Цитата:

Если в данный момент 5000+ пользователей, то будет ли все хорошо работать? без тормозов и сбоев.
Это зависит только от конфигурации сервера.

Каким боком этот вопрос имеет отношение к javascript'y ?

DjDiablo 09.11.2012 08:57

в php тоже есть сокеты, необязательно опрашивать каждые три секунды.

a_l 09.11.2012 11:13

Цитата:

Если в данный момент 5000+ пользователей, то будет ли все хорошо работать? без тормозов и сбоев.
5000+ онлайн или в сутки?
Если онлайн и каждые 3 секунды запросы к бд, то mysql скорей всего захлебнётся. Хотя при такой аудитории можете себе позволить нанять имеющих опыт hi-load разработки.

DjDiablo 09.11.2012 13:07

проблема с mySQL легко обходится.
можно выжать приемлимый результат через memCache и PDO

на глазок, как то так наверно.

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect");
$pdo = new PDO('mysql:host=localhost;dbname=имябазы', $username, $password);

// ниже попытка создать униерсальные функции 1я для извлечения данных, вторая для insert или update

//для извлечения
function smartQuery($query ,$memkey,$time){
     // сначало посмотрим нет ли инфы в мемкеше
     $get_result = $memcache>get($memkey);
     if ($get_result) {
          $res=$get_result;
     }
     //если нет то смотрим инфу в бд
     else {
          // Получить данные из базы и создать кэш
         $pdo->prepare($query);
         $pdo->execute();
         $row=$pdo->fetch();
 
         //найденную инфу запишем в мем кэш
         if ($time!=NULL && $memkey!= NULL) $memcache>set($memkey, $row, TRUE, $time); 
         $res=$row;
     }
      return $res
}

//для insert update
function smartExecute($query, $dat, $memkey,$time){
      // запишем инфу в мем кеш
      if ($time!=NULL && $memkey!= NULL) $memcache->set($memkey, $dat, TRUE, $time); 

      // запишем инфу в бд
      $q = $pdo->prepare($query);
      //в массив $dat походу ещё перед ключами двоеточие бы добавить, но лень думать :)
      $q->execute($dat);  
}

//юзать
class modelUser{

   function load($id){
         $dat=smartQuery('select......', 'user_'.$id, 600);        
  }
 
   function save(){
          smartExecute( 'update......', какие то данные, 'user_'.$id, 600);      
   }
}


Меня много больше беспокоят сами запросы к серваку каждые три секунды :)

DjDiablo 09.11.2012 14:06

Если вернуться к теме сокетов то трабла в том что на php придётся иметь скрипт на сервере в вечном цикле. Он будет играть роль игрового цикла, в серверной части.

set_time_limit(0);
ob_implicit_flush();
//бла бла
while(true)
{
    //ждёмс
    $accept = socket_accept($socket);
    //бла
}


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

Пофиг нафантазируем два способа.

1й) Когда пользователем будет открыта страница проверить запущен ли скрипт, и если скрипт не запущен тогда запустить. Как проверить , работает ли этот вечный скрипт ? Готовых методов неприпомню. Но это фигня, сделаем попытку подключения к сокету нашего вечного скрипта, если облом тогда запустим вечный скрипт. А как его запустить ведь в php нем многозадачности ? Похеру запустим при помощи CURL.

2й) Скрипт на Кроне срабатывающий каждые сколько то минут или часов, может проверять живой ли "вечный скрипт".

Но бля, всё это костыли, php не подходит для игр не хрена :(
В идеале конечно сразу бы писать на чём то более подходящем, на nodeJs или java к примеру.

Serg_pnz 09.11.2012 14:22

30 онлайн чатлан почти положили обыкновенный шаред за 300 руб./мес.
Чат работал как раз по схеме, предлагаемой ТС:
а). mootools каждые 15 секунд посылал запрос на предмет наличия новых мессаг.
б). каждые 10 секунд проверял кто к нам пришел. Результат кешировался в файл (тут наверное не очень умно).
в). каждые 40 секунд менял рекламу в блоках.

И, собственно, почему я пишу в прошедшем времени "работал", и сейчас работает демка. Но переписывать по-правильному лениво.


Часовой пояс GMT +3, время: 16:41.