核心特性
1.基于swoole和inotify实现分布式文件服务 2.采用协议包来实时同步文件、性能很高,采用sendfile传送文件,内存、cpu占有率很少 3.文件实时监控及监控子目录服务 4.自动断线重连服务 5.自动扫描本地已存在的文件目录实时同步服务
需要php以cli模式运行/server.php
php server.php start
php server.php stopphp server.php restartcomposer 安装
{
"require": { "qieangel2013/dfs": "0.1.6" }
}
安装swoole扩展和inotify扩展
修改/config/config.php文件相应的配置原理
dfs是基于swoole和inotify实现的分布式文件同步服务器框架,他借助于inotify实现实时对文件及其目录进行监控,基于swoole的事件驱动读取inotify的事件来做相应的逻辑处理,dfs框架的服务一旦启动,他会通过redis获取远程服务器在线列表然后自身启动客户端来连接远程服务器,每一个服务器都有一个服务端和多个客户端,这样每台服务器都能互通互联了,并且支持热拔,一旦服务器不提供服务了都会触发别的服务器跟其断开连接实现高可用!
DFS 配置
define('ServerIp',"0.0.0.0"); 配置服务器监听ip地址define('ServerPort',"9508");配置服务器监听端口define('ServerLog',dirname(DIR).'/log/FileDistributed.log');配置服务器日志路径define('redis_server','192.168.102.163');配置redis连接ip,注意redis启动时bind的ip不能为127.0.0.1define('redis_port','6379');配置redis的端口号define('redis_auth','123qwe');redis认证密码define('LISTENPATH',dirname(DIR).'/img');配置监听目录,dfs支持无限子目录监听define('allsysnc',true);是否允许扫描本地已存在的文件或者目录同步define('maxpackage', 1024 1024 200);配置协议包的最大长度define('Bincmd', '/usr/local/php/bin/php');配置php的绝对路劲define('file_arg', 'dfs');配置项目名称dfs的使用其实很简单,就是只要配置好配置文件,启动服务就可以了
在使用dfs框架时注意swoole的版本最好为1.8.9以上,因为之前的版本有sendfile的部分bug, 如果单个文件大于20m,请修改文件里的package_max_length的值,但是这个值不要设置太大