经过一些网络检索发现,像知乎等相关网站里关于ThinkSNS的专业技术信息相对较少,许多程序员们想检索一些关于ThinkSNS技术文档却无从得到。所以我便写了这篇关于ThinkSNS技术方面的文章同诸多喜欢ThinkSNS的创业者们分享,同时也为开发者提供本身在技术方面的看法。php
1、咱们常说的TS是什么?程序员
首先,咱们来熟悉下什么是TS,TS就是“ThinkSNS”的缩写,喜好TS程序的人,咱们称之为TSer。TS是一款开源程序,代码托管平台是GitHub,全部的细节修改,均为透明性更新。数据库
使用者能够经过官网和官方演示社区(Demo站)以及GitHub仓库得到TS最新的开发动态~固然,若是你有兴趣也能够Pull requesTS(简称PR)代码给TS开发人员,开发人员获得代码以后若是符合开源需求,就会合并到TS版本的当中,若是普通用户遇到问题,能够在demo站或者Github中提交Issues,均会获得开发人员的统一回复。缓存
TS对PHP版本要求压得比较低,基本行业都跨入了php5.5 or php5.6阶段了~可是考虑到国内大部分小众虚拟主机以及不少对相关专业知识不了解的人,因此,TS把php版本压低到了php5.3.12版本~固然,有人认为为何小版本是12,这个版本是php5.3的第一个稳定版~也就是这个小版本以前的版本都不是稳定版,因此不推荐安装使用。安全
2、Laravel框架Eloquent ORM 与TP框架服务器
TS在2016年的开发过程当中作了比较大的底层架构变更。众所周知,TS的底层是基于ThinkPHP框架进行二次修改的,用户不能就ThinkPHP直接对TS进行升级其中一个主要缘由就是TP框架并不是彻底遵循的MIT开源协议。固然,对开发者来讲TP框架技术架构自己也存在不够先进和过于抽象的问题。因此综合考虑,TS在数据交换时使用了Laravel框架的Eloquent ORM 。网络
Eloquent ORM 的优点是什么?这款ORM对数据的处理比较相似于Node.js的数据处理即一切皆为对象,并且ORM对数据关系的处理效率是不输于doctrine的,这也是TS这么选择的缘由。固然,考虑更多的是为之后更先进的架构作准备。TS将慢慢采用拓展方式进行开发,并对整个TS程序作架构数据交换等。php7
新的ORM的引入让TS考虑php7平台的运行,但php7已经彻底删除了MySQL的 链接方式,只有PDO和MySQLi。那么,若是想要在php7环境下运行,一定对DB类作从新修改,可是考虑到兼容性的问题,因此目前依旧在旧的应用上,仍是由model生成SQL,而后把SQL交给PDO来执行。而新开发的应用和功能均使用全新的ORM作的数据开发。架构
3、TS技术优点与拓展框架
除了引入新的ORM,TS还有不少技术优点,好比:有更容易被理解和集成的基类。这些基类是在第三方库的基础上进行二次封装,使TS的模块开发中设置的属性更加标准,也使开发入门更简单。由于,若是继承等都是由开发者去集成第三方的类,那么按照国情,这几乎是不可能的。而在此基础上开发者只须要看下基类,就知道集成后本身须要作什么,无需去学习第三方类。
TS新的拓展(目前是应用)中,原来的静态资源直接引用应用下的资源,在新的架构中,TS的应用都会被统一移动到一个公开缓存目录中,方便外部调用。如此设计是为了使得TS更加安全。这样用户就能够在不暴露代码的前提下获得应用中嵌套的静态资源,站长或者开发人员能够更安全的把非公开代码保留在暴露目录的上层隐藏起来。
那TS具体有哪些功能特点呢?这个问题基本上是仁者见仁智者见智了。由于TS集大成于一身,除了包含社交核心功能外,还有微吧、频道、资讯,活动、商城等,同时还有许多不一样行业属性的TS合做产品,如图:
4、聊天和风向才是社交的核心
TS具备独立开发的原生即时聊天系统。咱们知道,聊天和风向才是社交的核心。在PC中,TS使用JS轮询来实现消息的接收等操做;移动端中,TS使用了先进的技术方式—Socket技术,为了保证用户记录的不丢失,避免了P2P点对点传输,程序由一个客户端推送给服务器,服务器在把消息转推给另外一个客户端,并在数据库中概率,达到了多端同时到达的目的。