onigoetz/reactavel

此包已被废弃且不再维护。未建议替代包。
此包最新版本(dev-master)无可用许可证信息。

在 ReactPHP 上使用 Laravel

dev-master 2016-01-13 22:31 UTC

This package is auto-updated.

Last update: 2023-08-16 18:39:33 UTC


README

在 ReactPHP 上运行 Lumen,让速度快上加快。

这只是一个实验,你不应该将其用于生产环境。

为什么?

  1. 为了好玩!
  2. 我想看看是否可以通过只运行框架而不进行所有初始化来获得巨大的性能提升。

目标

我对这个项目有一些想法,我们看看是否能从中得到一些成果。

  • Reactavel 启用的安装仍应在 apache 上正常运行(√ 已工作)
  • 正确解码 Http 请求(Cookies、POST、GET、文件上传)(√ 大部分工作,Cookies 未实现)

安装

composer require onigoetz/reactavel dev-master

你现在可以通过运行:./vendor/bin/reactavel开始使用

如果你的主要目标是性能,你也可以尝试使用 HHVM: hhvm -v"Eval.Jit=true" ./vendor/bin/reactavel

路由

在应用程序服务器的上下文中,你不能依赖于全局变量或实例,因为它们可能包含其他用户的信息。在这种情况下,建议你在控制器或路由中请求请求和/或应用程序。

use Laravel\Lumen\Application;
use Illuminate\Http\Request;

$app->get(
    '/',
    function (Application $app) {
        return $app->version();
    }
);

$app->get(
    '/user/{id}',
    function ($id, Request $request) {
        return [$id, $request->cookies->all()];
    }
);

静态文件

以下是为 nginx 服务器静态文件提供服务的示例配置

upstream backend_reactavel  {
    server 127.0.0.1:8080;
}

server {
    root /work/external/reactavel/public;
    server_name localhost;
	listen 8090;	
	
    access_log  /logs/nginx/reactavel_access.log;
    error_log   /logs/nginx/reactavel_error.log;
	
	location @reactavel {
		proxy_pass http://backend_reactavel;
	}
	
	location ~* ^.+\.php$ {
		return 404;
	}
	
    try_files $uri @reactavel;
}

关于状态的一些话

因为现在所有请求都在同一个线程中运行,没有任何清理,其他请求留下的任何状态可能会产生副作用。

请注意这一点。