PHPEye开源社区 » PHP技术讨论区 » SOCKET与文本读写的问题
《Programming PHP》第二版上市
2008-6-19 00:07 grom
SOCKET与文本读写的问题

最近准备开始做一个东西,主要是SOCKET相关,要和一个远程SOCKET端口进行通信,要保持长连接
开始用PHP帮助手册上的SOCKET FUNCTIONS部分的函数,怎么都不行,后来用FSOCKOPEN连上了
因为在通信过程中,需要交互,在下就用了一个很无奈的办法,大致代码如下:
[php]
$server = 'xxx.xxx.xxx.xxx';
$port = 'xxxx';
$fp = fsockopen($server, $port);
$flag = true;
while($flag){
$data = fgets($fp,2048);
echo $data.'<br />';
ob_flush();
$content = check_file();
if ($content != ''){
  fwrite($fp,$content."\r\n");
}
}
function check_file(){
global $handle;
$file = 'announce/test.txt';
$contents = file($file);
$temp = $contents[$handle];
if($temp){
  $handle ++;
  $return = $temp;
}else{
  $return = '';
}
return $return;
}
[/php]
在不断循环过程中判断指定文件是否有新消息,有就发送,把消息写到文件中由另一个文件完成
[php]
if(isset($_POST['content'])){
$content = ($_POST['content']) ? $_POST['content'] : ' ';
$file = 'announce/test.txt';
$handle = fopen($file, 'ab');
fwrite($handle, format_time().'|'.$content."\n");
fclose($handle);
echo '1';
}else{
echo '0';
}
[/php]

基本上是这样,但问题出来了,消息记录到文件中,到被取出来发送,会延迟几秒甚至几十秒,换用MYSQL做消息存储也差不多,有哪位知道为什么不?
我是在一个框架页里,上半部显示通信内容,下半部发送消息。

2008-6-19 21:06 grom
都没个人指点一下

2008-6-23 09:44 linzhoulxyz
有高人指点一下吗? 我在一个程序中也是这么用的,我也想知道有没有什么别的解决方案

2008-6-23 11:53 haohappy
研究一下pear:: http_client的源代码。

页: [1]
查看完整版本: SOCKET与文本读写的问题


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.