分布式服务器通讯服务
2020-07-29 17:27 更新
建立多个服务器之间进行数据通信服务,服务自动连接在线服务器,支持热拔,启动服务后自动连接,无需人为干预
注意事项:
需要在conf/application.conf里配置端口和监听、日志等
需要有一个redis服务器,并且分布式服务器都能连接redis
web端可以直接调用服务
使用如下
//注意:type为sql、file,要是需要别的功能,自己定义
if($_FILES){
//数据同步
$sql = array('type'=>'sql','data'=>'show tables');
var_dump(distributed::getInstance()->query($sql));
//文件同步(不用安装rsync+inotify就可以实现文件同步,并且是触发式的占用很小的资源,调用sendfile零复制)
$dir_pre=MYPATH.'/public/uploads/';
if(!is_dir($dir_pre.date('Ymd'))){
mkdir($dir_pre.date('Ymd'),0777,true);
}
if(is_uploaded_file($_FILES['file']['tmp_name'])){
$upname=explode('.',$_FILES['file']['name']);
$filename=uniqid().substr(time(),-4).'.'.$upname[1];
if(move_uploaded_file($_FILES['file']['tmp_name'],$dir_pre.date('Ymd').'/'.$filename)){
echo "Stored in: " . $dir_pre.date('Ymd').'/'.$filename;
$fileinfo = array('type'=>'file','data'=>array('path' =>'/public/uploads/'.date('Ymd').'/'.$filename,'size'=>$_FILES['file']['size'],'ext'=>$upname[1]));
var_dump(distributed::getInstance()->queryfile($fileinfo));
}else{
echo 'Stored failed:file save error';
}
}else{
echo 'Stored failed:no post ';
}
}
本地访问:http:/localhost/index/distributed/
架构图
执行结果如下

以上内容是否对您有帮助:
更多建议: