Какой 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, мне очень нужен твой ответ на следующий вопрос: зачем создавать реал-тайм сервер, если можно просто воспользоваться jQuery+php+mysql? Я не понимаю как сервер будет устроен. Я прочитал как его включить у себя на компьютере, но как включить в интернет? Например, надо сделать чат на NodeJS. Где будет храниться инфа пользователей и сообщений? ведь не в mysql? |
Цитата:
Цитата:
Цитата:
Спасибо, посмеялся, вопросы из серии как мне построить машину, будь более конкретен. Это не всё так просто как кажется на первый взляд... |
Цитата:
к слову JavaScript - клиентская часть, PHP + MySQL - серверная часть |
Хм пажалуй jquery на клиенте
На серве NodeJs как вариант + взаимодействие по сокетам. APE c jquery кстатии могут дружить. |
Все посмеялись, а никто не ответил точно.
Ладно, если взять jquery+php+mysql, то в jquery нужно поставить таймер, например, каждые 3 секунды обновлять чат, посылая запросы в mysql. Если в данный момент 5000+ пользователей, то будет ли все хорошо работать? без тормозов и сбоев. |
sirjay,
Цитата:
Каким боком этот вопрос имеет отношение к javascript'y ? |
в php тоже есть сокеты, необязательно опрашивать каждые три секунды.
|
Цитата:
Если онлайн и каждые 3 секунды запросы к бд, то mysql скорей всего захлебнётся. Хотя при такой аудитории можете себе позволить нанять имеющих опыт hi-load разработки. |
проблема с 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); } } Меня много больше беспокоят сами запросы к серваку каждые три секунды :) |
Если вернуться к теме сокетов то трабла в том что на php придётся иметь скрипт на сервере в вечном цикле. Он будет играть роль игрового цикла, в серверной части.
set_time_limit(0); ob_implicit_flush(); //бла бла while(true) { //ждёмс $accept = socket_accept($socket); //бла } а как гарантировать пользователю что скрипт будет всегда запушен, а не сдохнет в случае глюка на серве. Пофиг нафантазируем два способа. 1й) Когда пользователем будет открыта страница проверить запущен ли скрипт, и если скрипт не запущен тогда запустить. Как проверить , работает ли этот вечный скрипт ? Готовых методов неприпомню. Но это фигня, сделаем попытку подключения к сокету нашего вечного скрипта, если облом тогда запустим вечный скрипт. А как его запустить ведь в php нем многозадачности ? Похеру запустим при помощи CURL. 2й) Скрипт на Кроне срабатывающий каждые сколько то минут или часов, может проверять живой ли "вечный скрипт". Но бля, всё это костыли, php не подходит для игр не хрена :( В идеале конечно сразу бы писать на чём то более подходящем, на nodeJs или java к примеру. |
30 онлайн чатлан почти положили обыкновенный шаред за 300 руб./мес.
Чат работал как раз по схеме, предлагаемой ТС: а). mootools каждые 15 секунд посылал запрос на предмет наличия новых мессаг. б). каждые 10 секунд проверял кто к нам пришел. Результат кешировался в файл (тут наверное не очень умно). в). каждые 40 секунд менял рекламу в блоках. И, собственно, почему я пишу в прошедшем времени "работал", и сейчас работает демка. Но переписывать по-правильному лениво. |
Часовой пояс GMT +3, время: 16:41. |