Zan PHP Framework

基于 PHP 协程的网络服务框架
授权协议 MIT
开发语言 PHP
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 甘明朗
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Zan PHP Framework 是有赞开源的基于 PHP 协程的网络服务框架,提供最简单的方式开发面向 C10K+ 的高并发SOA服务和RPC服务。

该项目每天为2,000+个服务提供300,000,000+次访问量支持,广泛应用于有赞各项业务。

核心特性

  1. 基于 yield 实现了独立堆栈的协程

  2. 类似于 Golang 的并发编程模型实现

  3. 基于 zan 提供异步非阻塞I/O服务

  4. 连接池支持(内置 MySQL、Redis、syslog 等多种组件)

  5. 类似 Golang 的 defer 机制解决由于异常导致的资源未释放、锁未释放的问题

  6. 可继承的View布局及组件化支持,方便完成 bigPipe/bigRender/ 首屏加载优化等不同的渲染方式

  7. 基于模型驱动的 SQLMap,实现了 SQL 的快速定位及方便的 sharding、cache 支持

  8. 提供类似于 Laravel 的 middleware(Filters & Terminators) 机制

  9. Di及单元测试的良好支持

  10. 完整的RPC远程服务调用方案

框架定位

ZanPHP 的定位是高并发 Web 服务或业务中间件。

ZanPHP 参考了很多 Golang 特性,不过目的绝不是为了替换掉 Golang。

PHP 在业务系统开发上的优势明显,而 Golang 相信会是将来系统编程的霸主。

ZanPHP 和 Golang 的边界是:ZanPHP做业务系统;Golang 做平台系统(中间件或基础服务组件)。

而 ZanPHP 和 Golang 编程模型的驱近,是希望能给PHP程序员一个更好的桥梁到Golang。

理想的技术栈是:ZanPHP + Go + 少量的C/C++。

当然对于致力于终身coding的码农来说:Java依然是很难跨过去的坎。

  • zan 是基于PHP协程的网络服务框架,要使用zan框架,首先需要了解php的yield。建议先看一下 在PHP中使用协程实现多任务调度 这篇文章,基础部分内容都只是这篇文章的整理。 yield yield是php的生成器语法,放在函数内部使用,其效果是return值并且中断此函数的执行。 一个简单的生成值的例子 function gen_one_to_three() { for ($i = 1;

  • ①根据文档内容要配置sqlmap连接池的读写白名单 http://doc.zanphp.io/zh/libs/connection_pool.html 示例代码 // demo.demo.demo_sql_id1_1对应resource/demo/sql/demo.php中的配置 $result = (yield Db::execute("demo.demo.row_sql_id1_1", $da

  • 持续更新:https://github.com/ar414-com/php-source-lib 学习资源 PHP相关的有参考价值的社区,博客,网站,文章,书籍,视频等资源 PHP网站(PHP Websites) PHP The Right Way - 一个PHP实践的快速参考指导 PHP Best Practices - 一个PHP最佳实践 PHP Weekly News - 一个PHP 周刊

  • Zan PHP Framework Zan PHP是基于PHP协程的网络服务框架,提供最简单的方式开发面向C10K+的高并发HTTP服务或SOA服务。 核心特效 基于 yield 实现了独立堆栈的协程 类似于 Golang 的并发编程模型实现 基于 swoole 提供非阻塞I/O服务 连接池支持(内置MySQL、Redis、syslog等多种组件) 类似Golang的defer机制解决由于异常导致

  • 学习资源 PHP相关的有参考价值的社区,博客,网站,文章,书籍,视频等资源 PHP网站(PHP Websites) PHP The Right Way - 一个PHP实践的快速参考指导 PHP Best Practices - 一个PHP最佳实践 PHP Weekly News - 一个PHP 周刊 Securing PHP - 有关PHP安全相关 PHP FIG - PHP框架交互小组 PSR

  • Web开发框架 Symfony2 - 由独立组件构成的框架(SP2) Zend Framework 2 - 同样是由独立组件构成的框架(ZF2) Laravel 5 - 简洁优雅的PHP Web开发框架(L5) Aura PHP - 独立组件的框架 Yii2 - 用于开发大型Web应用的高性能PHP框架 thinkphp - 中文最佳实践PHP开源框架 Nette - 同样是由独立组件构成的框架

 相关资料
  • 3. 基于UDP协议的网络程序 下图是典型的UDP客户端/服务器通讯过程(该图出自[UNPv13e])。 图 37.3. UDP通讯流程 以下是简单的UDP服务器和客户端程序。 /* server.c */ #include <stdio.h> #include <string.h> #include <netinet/in.h> #include "wrap.h" #define MAXLIN

  • 2. 基于TCP协议的网络程序 下图是基于TCP协议的客户端/服务器程序的一般流程: 图 37.2. TCP协议通讯流程 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()

  • 本文向大家介绍基于NIO的Netty网络框架(详解),包括了基于NIO的Netty网络框架(详解)的使用技巧和注意事项,需要的朋友参考一下 Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 Netty的优点有: a、功

  • UNIX系统有一个记录标准服务的数据库,这个数据库由头文件/etc/services或域名服务器提供。 关键头文件 netdb.h 关键结构体 struct servent /* server entry的缩写 */ { char *s_name; /* 服务程序的正式名字 */ char *s_alises;/* 服务程序的别名,为一字符串数组,空指针标志该数组结束 *

  • 网络服务提供弹性公网IP、NAT网关、DNS解析等功能。 弹性公网IP 弹性公网IP(Elastic IP)是一种NAT IP,通过与虚拟机绑定,将弹性公网IP与虚拟机的私有地址进行NAT映射,实现虚拟机与公网之间的通信。 NAT网关 NAT网关能够为公有云VPC网络中虚拟机提供IP地址转换功能,使虚拟机可以访问外网或提供互联网服务。 DNS解析 DNS解析用于将简单好记的域名解析为计算机用于通信

  • 本文向大家介绍基于C#动手实现网络服务器Web Server,包括了基于C#动手实现网络服务器Web Server的使用技巧和注意事项,需要的朋友参考一下 前言 最近在学习网络原理,突然萌发出自己实现一个网络服务器的想法,并且由于第三代小白机器人的开发需要,我把之前使用python、PHP写的那部分代码都迁移到了C#(别问我为什么这么喜欢C#),之前使用PHP就是用来处理网络请求的,现在迁移到C#

  • 网络基础 在互联网上之间的通信交流,一般是基于 TCP (Transmission Control Protocol,传输控制协议) 或者 UDP (User Datagram Protocol,用户数据报协议) ,如下图: 编写 Java 应用,我们只需关注于应用层 (application layer),而不用关心 TCP 和 UDP 所在的传输层是如何实现的。java.net 包含了你编程所

  • 我一直试图让spark在我的本地机器上运行kubernetes。然而,我在试图理解服务网络是如何工作的方面遇到了一个问题。 我在笔记本电脑上用容器运行kubernetes: null kubectl create-f Kubernetes/examples/spark/spark-master-controller.yaml kubectl create-f Kubernetes/examples