Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как создать Постоянное AJAX соединение

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Давит
Отправлено: 08 Марта, 2012 - 10:32:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Май 2011  


Помог: 2 раз(а)




Здравствуйте

Как создать js+php+mysql Постоянное соединение,
для php+mysql есть функция mysql_pconnect(),
но не понимаю как должно работать js+php, разви ент возможность с 1 запросом создать Постоянное соединение и после этого получит давание из сервера всегда?

Если есть примеры покажите пожалуйста буду очень благодарен.
 
 Top
EuGen Администратор
Отправлено: 08 Марта, 2012 - 10:35:33
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Давит
AJAX так или иначе делает запрос по HTTP, который, в свою очередь, синхронен (в отличии от, например, TCP). Так что постоянно открытую сессию "клиент-сервер" на HTTP у Вас не получится сделать.
Есть WebSockets - но эта технология специфична и поддерживается, если не ошибаюсь, только в FF (и то экспериментально)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Давит
Отправлено: 08 Марта, 2012 - 10:41:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Май 2011  


Помог: 2 раз(а)




а с помощью flash+php+mysql возможна?
 
 Top
EuGen Администратор
Отправлено: 08 Марта, 2012 - 10:52:31
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Flash тоже не дает такой возможности. Он работает на клиентской стороне и может делать запросы на сервер, но, работая в контексте HTTP, он также не имеет возможности сохранять сессию непрерывно открытой.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Давит
Отправлено: 08 Марта, 2012 - 11:38:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Май 2011  


Помог: 2 раз(а)




источник http://habrahabr[dot]ru/blogs/personal/60672/

ActionScript содержит встроенный класс XMLSocket, который позволяет создавать непрерывное соединение с сервером. Этот тип соединения устраняет задержку возникающую при постоянном опросе сервера и в основном используется в приложениях реального времени, таких как чат или многопользовательские игры.
В основе традиционной реализации HTTP-ориентированного чата, лежит постоянный опрос сервера с определённой частотой и загрузкой новых сообщений, с помощью HTTP запроса. В отличии традиционного решения, чат на основе XML сокета, поддерживает постоянное открытое соединение и позволяет серверу немедленно отправить входящие сообщения не дожидаясь запроса от клиента.

Требования предъявляемые к протоколу:

XML сообщения посылаются в течение полного дуплекса TCP/IP потока сокет-соединения.
Каждое XML сообщение должно являться полноценным XML документом, и завершаться нулевым байтом.
В рамках одного сокет-соединения XML может быть принято и отправлено неограниченное кол-во XML сообщений.
(Добавление)

Т.е в лубом случе возможна?

Например есть игра в контакте http://vk[dot]com/app2404568_101398448
каким способом он получает данные?

(Отредактировано автором: 08 Марта, 2012 - 11:43:27)

 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Марта, 2012 - 12:18:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Публичный (listen) канал:
PHP:
скопировать код в буфер обмена
  1. $wtime = 20; // максимальная задержка
  2.  
  3. $file = "/path/do/file.txt";
  4. $ctime = time();
  5. $mtime = filemtime($file);
  6.  
  7. while (true) {
  8.   if ($ctime+$wtime < time() or $mtime < filemtime($file)) {
  9.     echo "Состояние изменилось!";
  10.     break;
  11.   }
  12.  
  13.   usleep(200000); // 0.2 сек
  14.  
  15. }

Приватный (push) канал:
PHP:
скопировать код в буфер обмена
  1. $file = "/path/do/file.txt";
  2.  
  3. // TODO тут делаем что-то свое
  4.  
  5. // обновляем время изменения файла
  6. file_put_contents($file, "");

Клиент:
CODE (javascript):
скопировать код в буфер обмена
  1. $.get("/public/?"+Math.random(), function(response){
  2.   alert(response);
  3. });


Это только принцип.
На деле же советую посмотреть в сторону гугла и поискать там:

1) comet
2) realplexor/multiplexor
3) push module nginx

(Отредактировано автором: 08 Марта, 2012 - 12:22:22)

 
 Top
EuGen Администратор
Отправлено: 08 Марта, 2012 - 12:22:38
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Это дискретно, а не непрерывно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Марта, 2012 - 12:24:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Давит пишет:
js+php, разви ент возможность с 1 запросом создать Постоянное соединение

EuGen, но в контексте js+php человек просит не реальные вещи..
Так что только так.
 
 Top
caballero
Отправлено: 08 Марта, 2012 - 14:10:16
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
ActionScript содержит встроенный класс XMLSocket, который позволяет создавать непрерывное соединение с сервером.

только не с HTTP сервером


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Давит
Отправлено: 08 Марта, 2012 - 18:30:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Май 2011  


Помог: 2 раз(а)




А по TCP возможно?
 
 Top
duante
Отправлено: 08 Марта, 2012 - 18:37:56
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Давит пишет:
А по TCP возможно?


TCP - это протокол транспортного уровня. Вопрос некорректен.
 
 Top
LCarlo
Отправлено: 08 Марта, 2012 - 20:42:37
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Возможно Вам лучше попробовать сделать все это на jquery ?
К примеру, написать функцию, которая будет принимать\отправлять-принимать данные,
и сделать запуск функции ч-з опр. время.
 
 Top
caballero
Отправлено: 08 Марта, 2012 - 21:54:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
А по TCP возможно?

ясное дело


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Давит
Отправлено: 08 Марта, 2012 - 22:52:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Май 2011  


Помог: 2 раз(а)




В итогу мы сделать будем на flash+php+mysql,
просто я хотел понять как работает Постоянное соединение,
 
 Top
Sookamordiy
Отправлено: 04 Октября, 2012 - 13:57:33
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




[quote=DeepVarvar][/quote]
DeepVarvar пишет:
Публичный (listen) канал:
PHP:
$wtime = 20; // максимальная задержка
 
$file = "/path/do/file.txt";
$ctime = time();
$mtime = filemtime($file);
 
while (true) {
  clearstatcache();
  if ($ctime+$wtime < time() or $mtime < filemtime($file)) {
    echo "Состояние изменилось!";
    break;
  }
 
  usleep(200000); // 0.2 сек
 
}

Приватный (push) канал:
PHP:
скопировать код в буфер обмена
$file = "/path/do/file.txt";
 
// TODO тут делаем что-то свое
 
// обновляем время изменения файла
file_put_contents($file, "");

Клиент:
CODE (javascript):
скопировать код в буфер обмена
$.get("/public/?"+Math.random(), function(response){
  alert(response);
});



можно поподробнее про приватный и публичный канал? зачем они нужны? где их и как использовать? заранее спасибо.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB