2017 © Pedro Peláez
 

library socketframework

集成支付宝、微信支付等流行的支付接口,后续会持续跟进中

image

yanpengquan/socketframework

集成支付宝、微信支付等流行的支付接口,后续会持续跟进中

  • Wednesday, September 13, 2017
  • by ChinaCastle
  • Repository
  • 1 Watchers
  • 0 Stars
  • 10 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 0 % Grown

The README.md

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

功能

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

环境要求: 1/Linux 2/php5.5+, (*1)

扩展要求 swoole redis msgpack json fileinfo pdo pdo-mysql mysqlnd mysqli, (*2)

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

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

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

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

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

TODO MySql连接池技术, (*8)

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

PDM标记: 1:, (*10)

使用手册

目录

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

[Linux] (#__RefHeading__607_584730065), (*12)

[Windows] (#__RefHeading__609_584730065), (*13)

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

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

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

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

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

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

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

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


一、环境依赖

Linux下

  • PHP5.5.0以上版本, (*22)

  • Swoole扩展, (*23)

  • PHPRedis, (*24)

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

Windows下

  • 安装cygwin,并安装gcc、make 、autoconf、php 4个包, (*26)

  • 安装swoole、phpredis, (*27)


二、项目创建

1、创建启动文件,引入, (*28)

SocketFramework框架


Start.php, (*29)

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 //通用

配置, (*30)

                    |Config

Swoole.php //swoole模式服务器配 置, (*31)

http.php //http模式服务器配置, (*32)

                    |

Functions, (*33)

function.php //共有方法, (*34)

            |User

                    |Config

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

                    |

Controller, (*36)

UserController.class.php //控制 器, (*37)

                    |Model

UserModel.class.php //模型, (*38)

                    |Object

UserObj.class.php //数据对象, (*39)

3、swoole模式服务器配置

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

LISTEN //监听配置

HOST

允许访问的ip,设置为0.0.0.0为全 ip允许访问, (*41)

PORT

设置服务器暴露端口, (*42)

TYPE

监听类型, (*43)

DISPATCH

路由设置,设置访问参数的解析方式, (*44)

OUT

输出参数格式设置, (*45)

CONF //服务器配置

详见swoole官方文档, (*46)

Daemonize

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

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

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

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

task_worker_num

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

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

dispatch_mode

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

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

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

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

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

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

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

worker_num

设置启动的worker进程数。, (*60)

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

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

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

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

三、运行程序


cd /home/ServerDemo php start.php

四、函数列表

五、更新记录

[2016-04-25], (*64)

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

[2016-04-24], (*66)

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

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

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

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

The Versions

13/09 2017

dev-master

9999999-dev https://my.oschina.net/yanpengquan

集成支付宝、微信支付等流行的支付接口,后续会持续跟进中

  Sources   Download

MIT

The Requires

  • php >=5.5

 

pay model swoole

13/09 2017

dev-online

dev-online https://my.oschina.net/yanpengquan

集成支付宝、微信支付等流行的支付接口,后续会持续跟进中

  Sources   Download

MIT

The Requires

  • php >=5.5

 

pay model swoole

17/03 2017

dev-dev

dev-dev https://my.oschina.net/yanpengquan

集成支付宝、微信支付等流行的支付接口,后续会持续跟进中

  Sources

MIT

The Requires

  • php >=5.5

 

pay model swoole

17/03 2017

dev-stable

dev-stable https://my.oschina.net/yanpengquan

集成支付宝、微信支付等流行的支付接口,后续会持续跟进中

  Sources

MIT

The Requires

  • php >=5.5

 

pay model swoole

05/12 2016

1.0.x-dev

1.0.9999999.9999999-dev https://my.oschina.net/yanpengquan

集成支付宝、微信支付等流行的支付接口,后续会持续跟进中

  Sources

MIT

The Requires

 

pay model swoole