проблема с 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, время: 20:26. |