|
|
|
| скажите, как организовать непрерывное соединение с сервером?
(для чата) | |
|
|
|
|
|
|
|
для: Blizard
(19.07.2007 в 14:24)
| | знаю тока шо можно запрашивать данные каждые N секунд | |
|
|
|
|
|
|
|
для: bronenos
(19.07.2007 в 15:19)
| | можно сделать соединение клиент-сервер только один раз, например при входе пользователя в чат, и не придется постоянно открывать файл или базу, все современные чаты работают именно так, только я не знаю (поэтому и задаю такой вопрос) как осуществить данное соединение и вообще как оно работает | |
|
|
|
|
|
|
|
|
для: Trianon
(19.07.2007 в 18:10)
| | Trianon! Огромное спасибо за ссылку, с удовольствием почитаю =) | |
|
|
|
|
|
|
|
для: Trianon
(19.07.2007 в 18:10)
| | встречный вопрос
непрерывный коннект это просто цикл без конца
так вот вопрос
а не сильно ли грузит сервер сотня работающих копий скрипта? | |
|
|
|
|
|
|
|
для: bronenos
(19.07.2007 в 22:08)
| | кстате для примера вот чат на непрерывном движке http://www.august4u.ru/ или http://www.mpchat.ru/ | |
|
|
|
|
|
|
|
для: bronenos
(19.07.2007 в 22:08)
| | >встречный вопрос
>непрерывный коннект это просто цикл без конца
это нет так
>так вот вопрос
>а не сильно ли грузит сервер сотня работающих копий скрипта?
работать можно по-разному.
IRC вообще обычно не на php реализуется. | |
|
|
|
|
|
|
|
для: Trianon
(19.07.2007 в 23:01)
| | Непрерывное соединения в чатах обычно используется для загрузки главного окна без постоянного его обновления.
Можно реализовать бесконечным циклом вот такого вида:
<?PHP
set_time_limit(0); //устанавливаем бесконечное время исполнения
function send_chat() {
//тут одному вам известным методом получаем сообщение на вывод
return "Полученное сообщение";
}
while(1) {
//тут получаем с помощью самописной функции сообщение которое нужно вывести на экран
$result = send_chat();
echo $result."<br>"; //выводим результат на экран
flush(); //очищаем буфер
sleep(1); //задержка
}
?>
|
Однако замечу, что работает данный вариант не всегда и не везде, зависит от настройки PHP, так как частенько возникают проблемы с функцией flush(); иногда приходиться экспериментировать | |
|
|
|
|
|
|
|
для: Trianon
(19.07.2007 в 23:01)
| |
>>встречный вопрос
>>непрерывный коннект это просто цикл без конца
>
>это нет так
|
хм? sleep + flush + while(true) - разве нет? | |
|
|
|
|
|
|
|
для: bronenos
(20.07.2007 в 18:30)
| | посмотрите функции stream_socket_accept() и socket_select() | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2007 в 20:13)
| | это вы мне или кому? | |
|
|
|
|
|
|
|
для: bronenos
(20.07.2007 в 20:15)
| | Вам. В ответ на Ваш вопрос. | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2007 в 20:17)
| | Вы меня конечно извините, но при чем тут сокеты?
<?php
while (true)
{
print "<script> alert ('Текущее время: '".date('H:i:s')."'); </script>";
flush();
sleep (3);
}
?>
|
вот же примерный план... | |
|
|
|
|
|
|
|
для: bronenos
(20.07.2007 в 20:36)
| | протокол http - вообще не для непрерывного коннекта. | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2007 в 23:45)
| | хм | |
|
|
|