workerman/adapterman

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

赞助包维护!
joanhey

dev-master 2023-01-13 13:43 UTC

This package is auto-updated.

Last update: 2024-09-13 17:06:23 UTC


README

更快、更可扩展的应用程序,也可以用作无服务器。

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

如果您的应用程序或fw使用前端控制器,99%都会工作。需要最小PHP 8.0。

实际上正在与以下应用程序和框架一起工作

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

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

新功能!!! Workerman无共享模式

我们开始测试它。仍然是实验性的。

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

image

性能基准Worker模式

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

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

Symfony 6

具有完整的ORM image 延迟 image

Laravel 8

具有完整的ORM。

image 延迟 image

使用Workerman的Slim

无ORM image

  • 无ORM和为Workerman优化过的db类

使用Workerman的Symfony演示

使用Workerman的Symfony初始化0ms和请求时间减半。

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();

前端控制器

对于任何fw和app都不同。

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

推荐的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管理面板。 image

显示公共页面的Drupal。 image