Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сокеты PHP слушать порт не вися

Сообщения:  [1-4] 

 
 автор: Fractured#   (12.12.2009 в 22:37)   письмо автору
 
   для: metaluga   (12.12.2009 в 17:05)
 

> Поэтому я рассматриваю 2-ой вариант с логическим соединением клиента-сервера с помощью сокетов.

В приведенном скрипте (о да) клиенты вынуждены стоять в очереди. Обработку клиента нужно пихать в отдельный поток после socket_accept'а

  Ответить  
 
 автор: metaluga   (12.12.2009 в 17:33)   письмо автору
 
   для: Trianon   (12.12.2009 в 17:19)
 

да. не браузерный.
просто жалко ресурсов на хосте.

ай лана.
пасиба.

чето я стал уже всех жалеть.

пайду у америкософ надыбаю уан-клик-хостинг-виз-пхп-сокетс.
повещу им там висяк-пхп-прослушивалку.
у них и так ресурсов девать не куда.

  Ответить  
 
 автор: Trianon   (12.12.2009 в 17:19)   письмо автору
 
   для: metaluga   (12.12.2009 в 17:05)
 

И кто будет к этому сокету подключаться и чем?
И как будет прокситься такой чат?
Или чат не браузерный?

Ну а про слушать порт, не вися... Вы сами всё прекрасно понимаете.

  Ответить  
 
 автор: metaluga   (12.12.2009 в 17:05)   письмо автору
 
 

Требуется написать серверную часть чата.

1 вариант - серверная часть просто обрабатывает данные пришедшие от клиента Постом и заносит их в базу данных.
Т.е. один из пользователей чето пишет и отсылает на сервер.
но отослать всем пользователям данное сообщение не получится.
Поэтому от каждого клиента потребуется каждые Х милисекунд отправлять запрос на сервер с целью получения новых сообщений.
Но этого хотелось бы избежать.

Поэтому я рассматриваю 2-ой вариант с логическим соединением клиента-сервера с помощью сокетов.
Естественно нашел скелет для данного скрипта:


<?php 
    error_reporting
(E_ALL); 
    
set_time_limit(0); 
    
ob_implicit_flush(); 
    
$address="localhost"
    
$port=7777
    
$sock=socket_create(AF_INET,SOCK_STREAM,0); 
    if(
$sock<0
        echo 
"socket_create() failed! reason: ".socket_strerror($sock)."\n"
    
$ret=socket_bind($sock,$address,$port); 
    if (
$ret<0
        echo 
"socket_bind() failed! reason: ".socket_strerror($ret)."\n"
    
$ret=socket_listen($sock,5); 
    if (
$ret<0
        echo 
"socket_listen() failed! reason: ".socket_strerror($ret)."\n"
    while(
true){ 
        
$msgsock=socket_accept($sock); 
        if (
$msgsock<0){ 
            echo 
"socket_accept() failed! reason: ".socket_strerror($msgsock)."\n"
            break; 
        } 
        
$msg="Welcome!"
        
socket_write($msgsock,$msg,strlen($msg)); 
        while(
true){ 
            
$buf=socket_read($msgsock,2048); 
            if(
$buf===false){ 
                echo 
"socket_read() failed! reason: ".socket_strerror($ret)."\n"
                break 
2
            } 
            if(!
$buf=trim($buf)) 
                continue; 
            
$talkback="Answer!"
            
socket_write($msgsock,$talkback,strlen($talkback)); 
        } 
        
socket_close($msgsock); 
    } 
    
socket_close($sock); 
?> 
 


Как видим тут возникает проблема прослушивания порта.
Скрипту приходится зависнуть.
*set_time_limit(0)+while(true)
К серверу хостера конечно доступа не имею иначе набросал бы быстренько на борланде серверную часть и не парился бы.

Так все же можно ли как то слушать порт без зависания скрипта?

Неконструктивные предложения типа "инна" или "апстенку" просьба не писать.

  Ответить  

Сообщения:  [1-4] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования