One-minimalist。高性能。松耦合。分散式。可运行于多种环境(cli,apache/php-fpm,swoole)码云:https://gitee.com/vicself/onegithub:https://github.com/lizhichao/one适用场景常规web/app后台服务器game/im即时通讯服务器tcp/udp物联网服务器综合项目,各种混合协议通讯修复问题使用文件(文件)缓存时,未设置过期时间缓存失效问题。新增模型方法flushTableInfo,主动刷新数据表结构缓存。什么是分布式并发模型ActorActor?它是一种对应于共享内存的并发模型,具有资源独占性。可以理解为一个对象,它有属性和方法。主要方法Actor::init()CreateActorActor::drop($actor_id)DeleteActorActor::call($actor_id,$method,$args)Actor通信适用于各个对象都在变化,对象之间有通信的场景。例1游戏:每个角色都是一个actor实例:属性:生命值,攻击力方法:生命值加/减classUserActorextendsActor{//生命值private$life_value=10;//攻击强度private$power_value=5;//长连接fdpublic$fd;//返回自己的演员IDpublicfunctiongetActorId(){return$this->actor_id;}//改变生命值并通知客户端publicfunctionchangeLifeValue($n){$this->life_value+=$n;$this->noticeClient();}//攻击一个Actor=>减少Actor的生命值//被攻击的Actor可以在其他进程或其他机器上使用publicfunctionfire($actor_id){$this->call($actor_id,'changeLifeValue',[$this->power_value]);}//通知客户端当前生命值publicfunctionnoticeClient(){self::$server->push($this->fd,$this->life_value);}}//实例化一个角色$user1=UserActor::init();//获取这个角色的actor_id$actor_id=$user1->getActorId();//角色死亡DestroyactorUserActor::drop($actor_id);Vs共享内存方式每个用户的属性都需要存放在一个共同的地方,每次访问都非常麻烦。如果改变了用户的属性值,还需要考虑并发问题。如果属性比较多,写起来会很复杂。例如:用户a、b、c。分布在不同的机器上。a和b同时击中c;
