quantumca/adapterman

使用 Workerman 与任何框架和应用程序。

资助包维护!
joanhey

dev-master 2023-01-17 21:16 UTC

This package is auto-updated.

Last update: 2024-09-18 00:46:06 UTC


README

更快的应用,更可扩展,也可以作为无服务器使用。

使用异步事件驱动的 Workerman 运行几乎任何 PHP 应用,无需修改您的框架或应用中的一行代码。

如果您的应用或框架使用前端控制器,99%的情况都能工作。需要最低 PHP 8.0。

实际工作与

  • Symfony
  • Laravel
  • CakePHP
  • Yii2
  • Slim
  • KumbiaPHP
  • ThinkPHP
  • ... (您的应用?)

仍在测试更多框架和应用程序。无需修改一行代码。

NEW !!! Workerman 无共享模式

我们开始测试它。仍处于实验阶段。

每个请求都是独立的,并加载 .php 文件,就像使用 PHP-FPM 一样。使用相同的 .php 文件。

image

性能基准 Worker 模式

来自 Techempower 基准测试的结果。无需修改一行代码。

关注 https://twitter.com/adaptermanphp 获取更多更新。

Symfony 6

带有完整 ORM

image 延迟 image

Laravel 8

带有完整 ORM。

image 延迟 image

Slim with Workerman

  • 无 ORM

Symfony demo with Workerman

Symfony 初始化 0ms 和每个请求的一半时间。

Grabacion_microsoft-edge-dev_20221023170450.mp4

安装

composer require quantumca/adapterman

自动安装 Workerman。

启动服务器

./vendor/bin/adapterman start laravel

结构

在哪里创建文件(《server.php》和《start.php》)

.
├── app(dir)
├── public(dir)
├── vendor(dir)
├── composer.json
├── server.php
└── start.php

服务器

server.php

<?php

require_once __DIR__ . '/vendor/autoload.php';

use Adapterman\Adapterman;
use Workerman\Worker;

Adapterman::init();

$http_worker                = new Worker('http://0.0.0.0:8080');
$http_worker->count         = 8;
$http_worker->name          = 'AdapterMan';

$http_worker->onWorkerStart = static function () {
    //init();
    require __DIR__.'/start.php';
};

$http_worker->onMessage = static function ($connection, $request) {

    $connection->send(run());
};

Worker::runAll();

前端控制器

对于任何框架和应用都是不同的。

我们正在为流行的应用程序和框架创建食谱。

推荐 start.php 并将 index.php 留在 public 中。

我们可以同时使用 Workerman 和 php-fpm 运行应用程序。

workerman 中的可用命令

运行您的应用程序。

php server.php start
php server.php start -d
php server.php status
php server.php status -d
php server.php connections
php server.php stop
php server.php stop -g
php server.php restart
php server.php reload
php server.php reload -g

Workerman 文档: https://github.com/walkor/workerman-manual

您还可以直接选择不同的 cli php.ini

php -c cli-php.ini server.php start

帮助解决会话问题

我已经在内部使用这个库超过两年,用于使用 Workerman 运行旧应用。

我们是为 API 和微服务制作的。因此,会话没有得到很好的测试。

登录进度

它支持使用 Symfony 和 Laravel。

Laravel Orchid 管理面板。 image

显示 Drupal 的公开页面。 image