Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 09.11.2012, 13:07
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

проблема с 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 в 13:37.
Ответить с цитированием
  #12 (permalink)  
Старый 09.11.2012, 14:06
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

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

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


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

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

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

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

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

Последний раз редактировалось DjDiablo, 09.11.2012 в 14:12.
Ответить с цитированием
  #13 (permalink)  
Старый 09.11.2012, 14:22
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен календарь на javascript. Где взять? javascript_pupil Общие вопросы Javascript 8 07.10.2011 18:34
Javascript: скриншот или взять кадр из swf-элемента. warobushek Events/DOM/Window 4 01.06.2011 13:50
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Какой способ задания значения переменной в javascript коде корректен user_robot Общие вопросы Javascript 3 08.12.2009 17:25