安装指南

版本选择

Stone推荐使用Laravel5, 但是也保持了对Laravel4的兼容性。 如果你是新项目, 强烈建议使用Laravel5来开发。

运行模式选择

Stone提供两种运行模式:Stone-Server和Stone-Web。

1. Stone-Server

Stone-Server主要针对高性能要求的api调用场景。这种模式下,Session不会工作, 也不会执行Laravel MVC的流程,自然也不会执行Http中间件,所有请求直接交由RequestHandler处理。

一个最简单的Handler定义如下:

<?php namespace App\Servers;

use Qufenqi\Stone\Contracts\RequestHandler;
use Response;

class Handler implements RequestHandler
{
    public function process()
    {
        return Response::make('hello, stone server!');
    }

    public function onWorkerStart()
    {

    }
}

如上, 所有请求将直接给Handler的process方法处理,因此能得到最大化的性能。 在测试中, 相比原生php的echo输出, Stone-Server在加载全部框架资源后, 性能损失不到10%。但是,你几乎可以直接使用原来Laravel写好的所有业务代码,使用Laravel的所有组件,也可以直接composer安装需要的组件。

关于Stone-Server的更详细介绍, 请阅读运行模式章节

2. Stone-Web

Stone-Web的目的是优化现有的基于Laravel的网站项目。 Stone接管Laravel的Http Kernel, 负责协调MVC执行流程。 在设计中, 尽量遵循原来的流程。原来的过滤器, 中间件都能正常工作。

为了设计Stone-Web, 我阅读了大部分的Laravel代码, 对Laravel 执行流程和设计架构有一定认识后才开始工作,以求尽可能的兼容原来的Laravel程序。但是,由于实际的项目代码可能很复杂, 原来的程序没有考虑常驻内存的场景,加上我对Laravel的理解难免存在错误,因此在使用Stone-Web的时候一直小心翼翼。

在设计Stone的时候一直遵循着几个原则:

  • 不破坏现有代码, 保证现有代码100%能运行在php-fpm上
  • 尽量提供保护机制, 降低产生意外错误的概率

这些都是为了尽量降低可能潜在的风险。

尽管如此,如果你对PHP内存使用没有足够的认识, 或者对你现在的项目质量没有足够的把握, 现阶段不推荐你把Stone-Web用于实际的生产环境。

关于Stone-Web的更详细介绍, 请阅读运行模式章节

了解风险

如果你对Stone已经有了初步了解, 并愿意尝试, 请继续阅读风险提示

results matching ""

    No results matching ""