joanhey/adapterman

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

资助包维护!
joanhey

0.6.1 2023-04-16 00:05 UTC

README

Tests Adapterman GitHub release GitHub

更快的应用和可扩展性,也可用作无服务器。

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

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

实际与以下工作

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

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

NEW !!! Workerman 无共享模式

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

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

image

Worker 模式性能基准

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

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

Symfony 6

具有完整的 ORM

Laravel 8

具有完整的 ORM。

image 延迟 image

与 Workerman 一起使用 Slim

无 ORM image

  • 无 ORM 和针对 Workerman 优化的数据库类

与 Workerman 一起的 Symfony 示例

Symfony 初始化 0 毫秒,每个请求时间减半。

Grabacion_microsoft-edge-dev_20221023170450.mp4

安装

composer require joanhey/adapterman

自动安装 Workerman。

树状结构

在哪里创建文件(server.phpstart.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 并在 public 中保留 index.php

我们可以同时使用 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

帮助解决会话问题

我在内部使用了这个库超过 2 年,用于使用 Workerman 运行旧应用程序。

我们为API和微服务创建了它。因此,会话没有经过充分测试。

登录进度

与Symfony和Laravel兼容

Laravel Orchid管理面板。 图片

Drupal显示公开页面。 图片