安装

easySwoole 项目依赖于 Swoole 扩展,在使用 easySwoole 之前需要先安装 swoole 扩展。

github 下载 swoole 源码,终端进入到 swoole 扩展目录,执行 /path/to/phpize && ./configure && make && make install 安装 swoole 扩展,安装完成之后编辑 php.ini 文件,加入 extenstion=swoole.so 。最后执行 /path/to/php -m 看到 swoole 则说明扩展安装成功。

安装完 swoole 之后,从 easySwoole 下载源码,下载下来之后目录结构如下

├── example
├── src
├── ide-helper
└── .htaccess-apache

其中,src 目录中的内容为项目需要的,目录结构如下 :

├── App
├── Conf
├── Core
├── server.php
└── unitTest.php

整个项目的业务代码应该都在 src/Appsrc/Conf 下。进入 src 下面执行 path/to/php server.php start 启动 easySwoole。在浏览器输入 ip:9501/ 可以看到欢迎使用语说明安装成功。

VS LAMP

使用 easySwoole 和传统的 LAMP 模式最大不同的地方在于整个 easySwoole 是常驻内存的,所以 PHP 守护进程和普通的 web 程序在变量的生命周期,内存管理方式等方面完全不同。针对一些萌新的 PHPer,给出以下的避坑指南:

  • easySwoole 支持多进程,不同进程中的 PHP 变量是不共享。即使是 $_GET, $_POST 等全局变量,在 A 进程中被修改,并不会影响到 B 进程
  • easySwoole 是常驻内存型的应用,所以不要在代码中编写 die, exit 等代码,这些代码会导致进程退出。这也是 easySwoole 不直接支持 composer 的原因,很多 composer 包中使用了很多 exit 代码,如果贸然使用可能会导致进程意外退出。
  • 不要在代码中调用 sleep 等睡眠函数,除非你明确知道其作用和效果。使用 sleep 等函数会导致进程阻塞。
  • 使用 require_once, include_once 代替 require, include. 由于 easySwoole 是常驻内存,所以加载 php 文件之后不会释放,因此一定要使用 *_once 来避免多次加载同一个文件,否则会发生 cannot redeclare function/class 的错误。
  • PHP 代码中如果有异常抛出,必须在回调函数中进行 try/catch 捕获异常,否则会导致工作进程退出。
  • 不要使用 echo, var_dump 函数进行输出,使用框架中的 $this->response()->write() 代替。因为 easySwoole 的输出对象可能是 web 或者 cli.

约定规范

  • 准项目中类名称与类文件(文件夹)命名,均为大驼峰,变量与类方法为小驼峰。
  • Core 目录为框架核心目录,Conf 目录为系统配置目录,默认应用目录为 App。
  • 框架中使用了大量的单例模式,包括 Request, Response, Config, Di, AutoLoader 等对象,请勿手动创建。

配置文件

所有的配置均在 Conf/Config.php 中以数组的形式表现。配置分为系统配置(sysConf)和用户自定义配置(userConf)两种,下面是部分的系统配置 :

return [
    "SERVER" => [
        "LISTEN" => "0.0.0.0",
        "SERVER_NAME" => "",
        "PORT" => 9501,
        "WS_SUPPORT" => false,
        "CONFIG" => [
            'task_worker_num' => 4, //异步任务进程
            "task_max_request" => 10,
            'max_request' => 3000,
            'worker_num' => 4,
        ],
    ],
    "DEBUG" => [
        "LOG" => 1,
        "DISPLAY_ERROR" => 1,
        "ENABLE" => false,
    ],
];

每个配置项的含义如下:

  • LISTEN, 配置 server 监听的 IP 地址。
  • SERVER_NAME, 为当前 server 配置一个名称。
  • PORT, 配置 Server 监听的端口
  • WS_SUPPORT, 是否开启 Websocket 的支持。
  • CONFIG, 这个配置项为一个数组。为 swoole 扩展定义的配置,包括 worker 进程数、task 进程数等等配置。如果需要对 swoole 定义的配置进行设置,可以修改这个数组。更多 swoole 配置相关的内容见 swoole 文档
  • DEBUG['ENABLE'],是否开启 Debug 模式,当这个值为 false, 那么 DEBUG['LOG']DEBUG['DISPLAY_ERROR'] 配置无效。

用户自定义配置可以在 Config/Config.php 中的 userConf 函数中添加。每个配置项以 key=>value 的形式添加。

运行中要获取/设置配置项请使用 Config::getInstance()->getConf()Config::getInstance()->setConf()。getConfsetConf 都支持 . 操作,例如要获取到 PORT 的值,可以使用 Config::getInstance()->getConf('SERVER.PORT') 来获取。

results matching ""

    No results matching ""