php sf框架,GitHub - YanCastle/sf: php swoole framework

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

##功能

自动Session管理,通过集成SessionHandler来实现Session管理或通过session函数扩展实现

集成Model模型管理,移植TP的Model实现

自动缓存,基于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

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文件和相关缓存文件

[2017-03-05]

+在DB.class.php中添加备份数据库和更新数据库的方法。备份数据库接口地址:./SocketFramework/Tsy/Plugs/Db/Db/backUp 参数path 备份的文件路径和名称 更新数据库的接口地址:./SocketFramework/Tsy/Plugs/Db/Db/upgrade 参数file 更新的sql文件的路径及名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值