Artik
Новичок
Socket's, проблемы.
deamon.php
add.php
Вот такое намудрил я, вначале запускаю deamon.php, потом открываю в другом окне add.php, пишу текст, он по сокетам передаеться и отображаеться в окне открытого демона. Демон пишет это не только в echo но и в socket_write.
Так вот, задача такая: как законектиться несколькими окнами к демону, и что б в каждом выводился текст когда я что то пишу. Это я хочу организовать на этой системе чат.
Пытался так:
Но тогда вообще демон зависает и даже в echo нечего не выдает.
Мне кажиться что можно устанавливать только одно сокет соединение, и если запустить второе, то первое зависает пока не закончиться второе.
Как поступить?
deamon.php
PHP:
<?
///////////////////////
$ip = '127.0.0.1';
$port = 9876;
///////////////////////
set_time_limit(0);
error_reporting (E_ALL);
for ($i=0;$i<50;$i++){
echo "<!-- -->";
}
flush();
echo "Go...<br>";
flush();
$sock = socket_create (AF_INET, SOCK_STREAM, 0);
$ret = socket_bind ($sock, $ip, $port);
$ret = socket_listen ($sock, 5);
while (1==1){
$msgsock = socket_accept($sock);
$read = socket_read($msgsock, 1024);
socket_write($msgsock, $read);
echo $read . "<br>";
flush();
}
?>
PHP:
<body onload="document.post.txt.focus();">
<form action="add.php" method=post name=post>
<input type="text" name="txt">
</form>
<?
global $txt;
if ($txt!=""){
///////////////////////
$ip = '127.0.0.1';
$port = '9876';
///////////////////////
$fp = fsockopen($ip, $port, $errno, $errstr, 10);
fputs($fp, $txt);
fclose($fp);
}
?>
Так вот, задача такая: как законектиться несколькими окнами к демону, и что б в каждом выводился текст когда я что то пишу. Это я хочу организовать на этой системе чат.
Пытался так:
PHP:
<?
///////////////////////
$ip = '127.0.0.1';
$port = 9876;
///////////////////////
set_time_limit(0);
error_reporting (E_ALL);
echo "Reading...<br>";
flush();
for ($i=0;$i<50;$i++){
echo "<!-- -->";
}
flush();
$fp = fsockopen($ip, $port, $errno, $errstr);
while (1==1){
echo fread($fp, 1024);
flush();
}
?>
Мне кажиться что можно устанавливать только одно сокет соединение, и если запустить второе, то первое зависает пока не закончиться второе.
Как поступить?
