...使用既存のPHPソケット
私は、サーバーにストリーミングソケットを開き、PHPスクリプトを持って、応答のための要求を待つ送信メッセージ。スクリプト上
<?php
$addr="192.168.1.1";
$port=6010;
$sock = fsockopen("tcp://$addr:$port", $errno, $errstr, $timeout) or die("socket problem");
stream_set_timeout($sock,30) or die("timeout not set");
$message='<?xml version="1.0" encoding="UTF-8"?><Request><Type>1</Type></Request>'
$slen=pack("N",strlen($message));
fwrite($sock,$slen.$message);
ob_flush();flush();
while((!feof($sock)) && (!$info['timed_out'])){
$b3=fread($sock,3);
$b4=fread($sock,1);
$temp=unpack("N",$b3.$b4);
$length=$temp[1];
$lines=fread($sock,$length);
if($lines){
if(preg_match("'<Response>(.*?)</Response>'",$lines, $match)){
if($match){
$content=$match[1];
echo nl2br($content);
}
}
}
$info = stream_get_meta_data($sock);
}
fclose($sock);
?>
はうまく動作しますが、私は、whileループを終了し、サーバーにキャンセルメッセージを送信するために( - ボタンキャンセル)が機能を追加したいと思います:スクリプトは次のようになります同じソケットを使用して、例えばタイプ0
問題は、サブミットによってページがリフレッシュされ、現在の$ sockが緩くなることです。
いずれかのアイデアや簡単な解決策が高く評価されます。
ありがとうございました。 T.
私はあなたがスクリプトは、データベースから状態を読み込むように、外部の何かを確認する必要があるとしている実行しているされたと考えることができますすべてのファイル処理をいつ変更するかを知るために、各反復でセッションハンドラを開始および終了させることができます。 – Scuzzy