PHP Сокеты + flash

Fallow

Новичок
Здрасте :)
Не могу разобраться с сокетами в php.
Хочу сделать банальный реал тайм на php+flash.
Порылся в функциях по работе с сокетами, ну не совсем догнал что это.
Собственно вот код php:
PHP:
//Разрешаем скрипту работать бесконечно
set_time_limit(0);
//Выводим echo сразу, а не после загрузки всей страницы как это происходит по умолчанию
ob_implicit_flush();

$address = "127.0.0.1";
$port = 80;

//Создаём сокет
if(($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) == true) echo 'ok!';

//Привязываем созданный сокет определённому адрессу и порту
if(($ret = socket_bind($socket, $address, $port))== true) echo 'ok!';
	
//Прослушиваем сокет
if((socket_listen($socket,1)) == true) echo 'ok!';

do //Ждём клиентов
{
	if(($newClient = socket_accept($socket)) == true)
	{
		//Отправляем сообщение подключившемуся клиенту
		$clientMessage = "Привет!";	
		socket_write($newClient,$clientMessage);
		
	}
}
while(true);
Вот as3:
//Создаем обьект сокет
var socket:Socket = new Socket();
socket.connect("127.0.0.1",80);
socket.addEventListener(Event.COMPLETE, Connected);
function Connected(e:Event):void
{
//Уведомляем
trace('Подключили сокет!');
//Если сервер что то хочет сказать запускаем функцию accept
socket.addEventListener(ProgressEvent.SOCKET_DATA, Accept);
//А если ошибки где-то их тоже не скрываем
socket.addEventListener(IOErrorEvent.IO_ERROR, ShowError);
}
function Accept(e: ProgressEvent):void
{
//Уведомляем
trace('Сервер хочет что-то сказать');
//Показываем серверное сообщение
answerServer.text = socket.readUTFBytes(12);
}
Вроде как всё подключается, и сообщение приходит.
А если я хочу например отправить сообщение попозже, реал тайм же всё таки хочу.
Например так (в самом деле тут будет например проверка новых записей в бд или ещё где нибудь)
PHP:
if(date("i") > 20)
{
   пишем в сокет...
}
То не приходит уже ничего во flash...
 

tz-lom

Продвинутый новичок
ну и собственно где код который не работает?
P.S.
вот при всей моей лютой,бешенной любви к РНР я не понимаю когда им пытаются решать абсолютно все задачи
 

Fallow

Новичок
Я же написал.
Подключаюсь к сокету, далее идёт бесконечный цикл. В цикле идёт проверка date("i") > 20 (сейчас 20). Когда наступает 21, сообщение не приходит на флешку.
 

tz-lom

Продвинутый новичок
полное непонимание того как работают эти функции , твой бесконечный цикл стоит на socket_accept и ждёт соединений,а не крутится постоянно
 

Fallow

Новичок
Я и после успешной проверки ставил, не присылает ничего.

update:
полное непонимание того как работают эти функции
Я вроде как из-за этого и спрашиваю.
 

tz-lom

Продвинутый новичок
1е - ещё раз прочти всю документацию на эти функции
2е - осознай что такое блокирующий вызов (а socket_accept очень даже блокирующий)
3е - читая доку пойми как делать неблокирующий сокет
 
Сверху