Skip to content

YanCastle/Tsy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#碳素云基于Swoole的服务端框架 ##功能

  1. 自动Session管理,通过集成SessionHandler来实现Session管理或通过session函数扩展实现
  2. 集成Model模型管理,移植TP的Model实现
  3. 自动缓存,基于Redis做缓存

环境要求: 1/Linux 2/php5.5+

扩展要求 swoole redis msgpack json fileinfo pdo pdo-mysql mysqlnd mysqli

注意事项 需要区分缓存级别,一个是应用CLI应用模式下的临时缓存,这部分缓存需要在每次启动服务时清空 一种是持久缓存,启动应用不需要清空,如Session

需要配置哪个接口接入的数据允许访问哪些模块的哪些类

IP限定功能,只允许哪个IP范围的客户端连接

cache方法如果要缓存临时缓存则用tmp_开头,清楚临时缓存的方法是cache('[cleartmp]')

LOG服务,使用TCP或者UDP协议,在引入框架时通过Config或者define定义日志服务地址。所有使用L方法输出的日志全部发送到这个服务器上。

TODO MySql连接池技术

自动构建分为三部分, 1、构建PDM构建目录信息等

PDM标记: 1:

#使用手册

目录

[一、环境依赖 1] (#__RefHeading__605_584730065)

[Linux] (#__RefHeading__607_584730065)

[Windows] (#__RefHeading__609_584730065)

[二、项目创建 2] (#__RefHeading__611_584730065)

[1] (#__RefHeading__613_584730065)[ 、创建启动文件,引入 SwooleFramework] (#__RefHeading__613_584730065) 框架

[2] (#__RefHeading__615_584730065) 、项目结构

[3] (#__RefHeading__617_584730065)[ 、swoole] (#__RefHeading__617_584730065) 模式服务器配置

[LISTEN //] (#__RefHeading__619_584730065) 监听配置

[CONF //] (#__RefHeading__621_584730065) 服务器配置

[三、运行程序 ] (#__RefHeading__623_584730065)

[四、函数列表 ] (#__RefHeading__625_584730065)


一、环境依赖

Linux下

  • PHP5.5.0以上版本

  • Swoole扩展

  • PHPRedis

Swoole安装: [http://wiki.swoole.com/wiki/pa ge/6.html] (http://wiki.swoole.com/wiki/pa ge/6.html)

Windows下

  • 安装cygwin,并安装gcc、make 、autoconf、php 4个包

  • 安装swoole、phpredis


二、项目创建

1、创建启动文件,引入 SocketFramework框架


Start.php

error_reporting(E_ALL); //设置
PHP 的报错级别
$APP_PATH = 'Example';  //代码
路径
$RUNTIME_PATH = 'Runtime';  //
缓存
define('APP_MODE','SWOOLE');
//模式
define
('DEFAULT_MODULE','Application'
);//这个版本中必须定义默认模块
,其值与APP_PATH的最后一个目录
相同
include '../
SocketFramework/Tsy/Tsy.php';
//引入SocketFramework

2、项目结构

ServerDemo

    Start.php //入口文件

    |Demo

            |Common //通用

配置

                    |Config

Swoole.php //swoole模式服务器配 置

http.php //http模式服务器配置

                    |

Functions

function.php //共有方法

            |User

                    |Config

config.php //模块配置:数据库连 接信息、自定义常量等

                    |

Controller

UserController.class.php //控制 器

                    |Model

UserModel.class.php //模型

                    |Object

UserObj.class.php //数据对象

3、swoole模式服务器配置

在Swoole.php文件中进行配置,配 置信息为监听配置和服务器运行设置 。

LISTEN //监听配置

HOST

允许访问的ip,设置为0.0.0.0为全 ip允许访问

PORT

设置服务器暴露端口

TYPE

监听类型

DISPATCH

路由设置,设置访问参数的解析方式

OUT

输出参数格式设置

CONF //服务器配置

详见swoole官方文档

Daemonize

守护进程化。设置daemonize => 1时,程序将转入后台作为守护进程 运行。长时间运行的服务器端程序必 须启用此项。

如果不启用守护进程,当ssh终端退 出后,程序将被终止运行。

  • 启用守护进程后,标准输入和 输出会被重定向到 log_file

  • 如果未设置log_file,将重定 向到 /dev/null,所有打印屏幕的信 息都会被丢弃

task_worker_num

配置task进程的数量,配置此参数 后将会启用task功能。所以swoole _server务必要注册 onTask/onFinish2个事件回调函数 。如果没有注册,服务器程序将无法 启动。

task进程是同步阻塞的,配置方式 与worker同步模式一致。

dispatch_mode

数据包分发策略。可以选择3种类型 ,默认为2

  • 1,轮循模式,收到会轮循分配 给每一个worker进程

  • 2,固定模式,根据连接的文件 描述符分配worker。这样可以保证 同一个连接发来的数据只会被同一个 worker处理

  • 3,抢占模式,主进程会根据 Worker的忙闲状态选择投递,只会 投递给处于闲置状态的Worker

  • 4,IP分配,根据客户端IP进行 取模hash,分配给一个固定的 worker进程。可以保证同一个来源 IP的连接数据总会被分配到同一个 worker进程。算法为 ip2long (ClientIP) % worker_num

  • 5,UID分配,需要用户代码中 调用$serv->bind()将一个连接绑 定1个uid。然后swoole根据UID的值 分配到不同的worker进程。算法为 UID % worker_num,如果需要使用 字符串作为UID,可以使用crc32 (UID_STRING)

dispatch_mode 4,5两种模式,在 1.7.8以上版本可用
dispatch_mode=1/3时,底层会屏 蔽onConnect/onClose事件,原因是 这2种模式下无法保证 onConnect/onClose/onReceive的顺 序
非请求响应式的服务器程序,请不要 使用模式1或3

worker_num

设置启动的worker进程数。

  • 业务代码是全异步非阻塞的, 这里设置为CPU的1-4倍最合理

  • 业务代码为同步阻塞,需要根 据请求响应时间和系统负载来调整

比如1个请求耗时100ms,要提供 1000QPS的处理能力,那必须配置 100个进程或更多。但开的进程越多 ,占用的内存就会大大增加,而且进 程间切换的开销就会越来越大。所以 这里适当即可。不要配置过大。

  • 每个进程占用40M内存,那100 个进程就需要占用4G内存

三、运行程序

cd /home/ServerDemo

php start.php

四、函数列表

五、更新记录

[2016-04-25]

^cache函数中的标签操作中的-针对数组的算法使用数组求差集而不是搜索后unset

[2016-04-24]

+cache函数支持[+][-][-A][+A][-S][-A]操作符,+-表示添加或删除,A表示按数组操作,S表示按字符串操作, 示例:

cache('[+A]ke','ss');

[2016-04-22] +若在启动脚本中定义APP_BUILD值为true,则会扫描项目目录下的模块并链接模块配置中的数据库生成Controller和Object以及Model文件和相关缓存文件

About

The PHP Framework Base on Swoole.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published