Swoole Framework 高性能 PHP 代码开发的 Web 框架

发布于 2020-04-09 09:43:56 字数 4283 浏览 1509 评论 0

Swoole Framework 是使用纯 PHP 代码开发的 Web 框架,其中内置应用服务器,并提供了统一注册树、数据库操作、模板、缓存、日志、队列、上传、用户管理等功能。使用内置应用服务器,可节省每次请求代码带来的额外开销,另外连接池可以很好的帮助存储系统节省连接资源。

Swoole Framework 是一套设计精巧能有效提高开发效率的PHP框架,Swoole Framework 拥有统一且唯一的全局对象,类似Java的注册树,可以挂载常用的对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。

Swoole Framework 提供了 MVC 的 apps 结构,通过 Controller 的继承实现业务逻辑的封装,通过Model的继承实现数据库操作的封装,View使用Smarty模板引擎实现页面现实逻辑的封装。

高级开发框架

与其他 Web 框架不同,Swoole Framework 是一个全功能的后端服务器框架。除了 Web 方面的应用之外,更广泛的后端程序中都可以使用。

  • 内置PHP应用服务器,可脱离nginx/php-fpm/apache独立运行
  • 配置化与资源自动工厂,可实现从配置中创建资源对象,完全无需new对象
  • 全面采用命名空间+autoload,代码中无需任何的include/require
  • 全局注册树,所有资源都挂载到全局树上,彻底实现资源的单例管理和懒加载
  • 全栈框架,提供了数据库操作,模板,Cache,日志,队列,上传管理,用户管理等几乎所有的功能

PHP版本需求: PHP5.4/PHP5.5/PHP5.6/PHP7.0/PHP7.1,不支持PHP5.3

应用服务器

使用内置应用服务器,可节省每次请求代码来的额外消耗。连接池技术可以很好的帮助存储系统节省连接资源。

支持特性

  • 热部署,代码更新后即刻生效,以来 runkit 扩展。
  • MaxRequest 进程回收机制,防止内存泄漏。
  • 支持使用 Windows 作为开发环境
  • HTTP KeepAlive 可节省 TCP 连接带来的开销
  • 静态文件缓存可节省流量
  • 支持 Gzip 压缩可节省流量
  • 支持 MySQL 重新连接
  • 支持文件上传
  • 支持 POST 大文本
  • 支持 SESSION/Cookie
  • 支持 HTTP/FastCGI 两种协议

安装配置

$ git clone https://github.com/swoole/framework
$ cd framework
$ composer update

核心目录

  • index.php Web单一入口文件
  • server.php 服务器程序启动入口
  • console.php
  • apps 应用程序代码
    存放mvc、数据库、缓存配置、任务、通用代码等公用代码,不得放置静态文件,比如全部为PHP文件,且不允许HTTP直接访问。
  • libs 存放swoole_framework核心文件
  • tools

额外提供的网络协议

  • WebSocket协议支持,并附带一个基于websocket协议的webim系统
  • 普通Web服务器,可支持静态文件和普通include php方式的程序
  • SOA逻辑层服务器/客户端,支持并行请求
  • 一个简单的SMTP服务器
  • FtpServer
  • 异步HttpClient

使用方法

Swoole Framework 应用服务器,需要安装 swoole 扩展。

pecl install swoole

然后修改 php.ini 加入 extension=swoole.so

<?php
require __DIR__.'/libs/lib_config.php';

$AppSvr = new Swoole\Protocol\AppServer();
$AppSvr->loadSetting(__DIR__."/swoole.ini"); //加载配置文件
$AppSvr->setAppPath(__DIR__.'/apps/'); //设置应用所在的目录
$AppSvr->setLogger(new Swoole\Log\EchoLog(false)); //Logger

/**
 *如果你没有安装swoole扩展,这里还可选择
 * BlockTCP 阻塞的TCP,支持windows平台,需要将worker_num设为1
 * SelectTCP 使用select做事件循环,支持windows平台,需要将worker_num设为1
 * EventTCP 使用libevent,需要安装libevent扩展
 */
$server = new \Swoole\Network\Server('0.0.0.0', 8888);
$server->setProtocol($AppSvr);
$server->daemonize(); //作为守护进程
$server->run(array('worker_num' => 1, 'max_request' => 5000));
php server.php
[2013-07-09 12:17:05]  Swoole. running. on 0.0.0.0:8888

在浏览器中打开 http://127.0.0.1:8888/

Nginx+FPM+Swoole 框架的 URLRewrite 配置

server {
    listen  80;
    server_name  www.swoole.com;
    root  /data/wwwroot/www.swoole.com;

    location / {
        if (!-e $request_filename){
            proxy_pass http://127.0.0.1:9501;
        }
    }
}

Apache+Swoole 框架的 URLRewrite 配置

<VirtualHost *:80>
    ServerName www.swoole.com
    DocumentRoot /data/webroot/www.swoole.com
    DirectoryIndex index.html index.php

    <Directory "/data/webroot/www.swoole.com">
        Options Indexes FollowSymLinks
            AllowOverride None
            Require all granted
    </Directory>

#   ProxyPass /admin !
#   ProxyPass /index.html !
#   ProxyPass /static !
#   ProxyPass / http://127.0.0.1:9501/

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
        RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ http://127.0.0.1:9501$1 [L,P]
    </IfModule>
</VirtualHost>

中文文档:https://www.wenjiangs.com/docs/swoole-framework

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文