代码拉取完成,页面将自动刷新
下面是我一个代码都没改的程序
<?php
function getPdo(){
$config=array(
'host'=>$_SERVER['DATABASE__HOST'],
'port'=>$_SERVER['DATABASE__PORT'],
'dbname'=>$_SERVER['DATABASE__NAME'],
'user'=>$_SERVER['DATABASE__USER'],
'password'=>$_SERVER['DATABASE__PASSWORD']
);
$attr=array(
PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,
PDO::ATTR_PERSISTENT=>false,
PDO::MYSQL_ATTR_INIT_COMMAND=>'set names utf8',
PDO::ATTR_ORACLE_NULLS=>true,
PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY=>false
);
$dns="mysql:host={$config['host']};port={$config['port']};dbname={$config['dbname']}";
$pdo=new PDO($dns,$config['user'],$config['password'],$attr);
return $pdo;
}
function getMoreBySql($sql)
{
global $pdo;
$stmt=$pdo->prepare($sql);
$stmt->execute();
$data=$stmt->fetchAll();
return $data;
}
function exxcuteBySql($sql)
{
global $pdo;
$stmt=$pdo->prepare($sql);
$stmt->execute();
}
//
$pdo=getPdo();
//
$server=new Swoole\Server('0.0.0.0',9500);
$server->set(array('worker_num'=>300,'daemonize'=>true));
$server->on('connect',function($server,$fd){});
$server->on('receive',function($server,$fd,$from_id,$data){
$array=json_decode($data,true);
$client=$array['client'];
if(isset($array['isConnection'])){
$server->send($fd,$data);
}
while(1){
$now=date('Y-m-d H:i:s',time()-5);
$sql="select id,dryFlag as flag,DryValue as value from log where dryClient='{$client}' and dryStatus=0 and dryAddTime>='{$now}' limit 10";
$list=getMoreBySql($sql);
if(!empty($list)){
$in=array();
foreach($list as $rs){
$in[]=$rs['id'];
}
$in=implode(',',$in);
exxcuteBySql("update log set dryStatus=1 where id in ({$in})");
$server->send($fd,json_encode($list));
}
sleep(1);
}
});
$server->on('close',function($server,$fd){});
$server->start();
?>
第一次启动后我用客户端连接,数据是可以交互的,可是隔一段时间后,基本10几个小时吧,客户端连接不会报错,然后ps -ef|grep server.php
,程序都还在的,通过kill -9 $(ps -ef|grep server.php|awk '{print $1}')
杀掉后重启,一切就正常了
下面是我客户端的代码(ip被改了而已)
<?php
$client = new Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$client->on('connect', function($cli){
$cli->send('{"client":"a"}');
});
$client->on('receive', function($cli, $data){
echo $data."\n";
});
$client->on('error', function($cli){});
$client->on('close', function($cli){});
$client->connect('10.10.10.10', 9500, 0.5);
?>