utopia-php/swoole

Utopia 框架的扩展,用于与 PHP Swoole 配合使用,作为 PHP FPM 的替代方案

0.8.2 2024-02-01 14:54 UTC

README

Build Status Discord Total Downloads

这是一个 Utopia 框架的扩展,用于与 PHP Swoole 配合使用,作为 PHP FPM 的替代方案。这个库扩展了默认的 Utopia 请求和响应类,以使其能够与 Swoole 服务器交互。这个库旨在尽可能简单且易于学习和使用。这个库由 Appwrite 团队 维护。

这个库是 Utopia 框架 项目的一部分。要使此库与 Utopia PHP 一起工作,您的 PHP 安装应编译有 PHP Swoole 扩展。

入门指南

使用 composer 安装

composer require utopia-php/swoole
<?php

if (file_exists(__DIR__.'/../vendor/autoload.php')) {
    require __DIR__.'/../vendor/autoload.php';
}

use Utopia\App;
use Utopia\Swoole\Request;
use Utopia\Swoole\Response;
use Utopia\Swoole\Files;
use Swoole\Http\Server;
use Swoole\Http\Request as SwooleRequest;
use Swoole\Http\Response as SwooleResponse;

$http = new Server("0.0.0.0", 80);

Files::load(__DIR__ . '/../public'); // Static files location

$http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swooleResponse) {
    $request = new Request($swooleRequest);
    $response = new Response($swooleResponse);

    if(Files::isFileLoaded($request->getURI())) { // output static files with cache headers
        $time = (60 * 60 * 24 * 365 * 2); // 45 days cache

        $response
            ->setContentType(Files::getFileMimeType($request->getURI()))
            ->addHeader('Cache-Control', 'public, max-age='.$time)
            ->addHeader('Expires', \date('D, d M Y H:i:s', \time() + $time).' GMT') // 45 days cache
            ->send(Files::getFileContents($request->getURI()))
        ;

        return;
    }

    $app = new App('Asia/Tel_Aviv');
    
    try {
        $app->run($request, $response);
    } catch (\Throwable $th) {
        $swooleResponse->end('500: Server Error');
    }
});

$http->start();

系统需求

Utopia 框架需要 PHP 8.0 或更高版本。我们建议尽可能使用最新版本的 PHP。

版权和许可

MIT 许可证 (MIT) http://www.opensource.org/licenses/mit-license.php