workerman 运行 fpm项目 分享

KingBes

AdapterMan

使用 Workerman 轻松提高几乎所有 PHP 应用程序的性能,实现更快的异步执行,而无需修改框架或应用程序中的任何一行代码。此外,利用 Workerman 作为强大的无服务器解决方案,用于可扩展的事件驱动工作负载。轻量化设计,效率高

一个作者叫 琼·米克尔 老外项目

当前兼容:

  • Symfony
  • Laravel
  • CakePHP
  • Yii2
  • Slim
  • KumbiaPHP
  • ThinkPHP
  • Leaf
  • FlightPHP
  • Wolff
  • Phpixie
  • ... (您的应用程序可能就是下一个!)
Framework JSON 1-query Multiple queries Fortunes Updates Plaintext
php php-fpm 187,747 97,658 12,784 79,309 2,010 195,283
php workerman 822,930 134,475 15,648 124,923 4,683 1,161,016

废话少说,下面以 Thinkphp 为例

  • 安装 Thinkphp
composer create-project topthink/think tp
  • 进入 Thinkphp 目录
cd tp
  • 安装 AdapterMan 拓展
composer require joanhey/adapterman
  • 运行(Linux 守护进程加 -d)
php -c .\vendor\joanhey\adapterman\cli-php.ini ./vendor/joanhey/adapterman/src/start.php


结果

242 2 2
2个评论

timeless-zyg

建议:
拷贝 /vendor/joanhey/adapterman/src/start.php 文件至项目根目录,并修改文件内容

use Adapterman\Adapterman;
use Adapterman\Http;
use Workerman\Worker;
use Workerman\Timer;

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

Adapterman::init();

require __DIR__ . '/vendor/joanhey/adapterman/src/frameworks/index.php';

Worker::$logFile = __DIR__ . '/runtime/workerman.log';
Worker::$pidFile = __DIR__ . '/runtime/workerman.pid';
Worker::$statusFile = __DIR__ . '/runtime/workerman.status';
Worker::$stdoutFile = __DIR__ . '/runtime/workerman_stdout.log';

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

$http_worker->onWorkerStart = function (Worker $worker) {
    if ($worker->id === 0) {
        Timer::add(600, function(){
            Http::tryGcSessions();
        });
    }
};

$http_worker->onMessage = static function ($connection, $request) {
    $connection->send(run());
};

Worker::runAll();
  • 暂无评论
xcljlj

为什么你的workerman5.1版本的可以安装 composer require joanhey/adapterman ,我这边项目按照提示 Your requirements could not be resolved to an installable set of packages.

Problem 1

  • Root composer.json requires joanhey/adapterman * -> satisfiable by joanhey/adapterman[v0.2, ..., 0.7.0].
  • joanhey/adapterman[v0.2, ..., 0.5.5] require workerman/workerman ^3.5 -> found workerman/workerman[v3.5.0, ..., v3.5.35] but it conflicts with your root composer.json require (^v5.1.0).
  • joanhey/adapterman[0.6, ..., 0.7.0] require workerman/workerman ^4.1 -> found workerman/workerman[v4.1.0, ..., v4.2.1] but it conflicts with your root composer.json require (^v5.1.0).

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
You can also try re-running composer require with an explicit version constraint, e.g. "composer require joanhey/adapterman:*" to figure out if any version is installable, or "composer require joanhey/adapterman:^2.1" if you know which you need.

KingBes

1830
积分
0
获赞数
0
粉丝数
2023-06-12 加入
🔝