2017 © Pedro Peláez
 

library laravoole

Get 10x performance for Laravel on Swoole or Workerman

image

garveen/laravoole

Get 10x performance for Laravel on Swoole or Workerman

  • Friday, November 10, 2017
  • by acabin
  • Repository
  • 50 Watchers
  • 832 Stars
  • 4,327 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 145 Forks
  • 25 Open issues
  • 31 Versions
  • 4 % Grown

The README.md

Laravoole

Laravel on Swoole Or Workerman, (*1)

10x faster than php-fpm, (*2)

Latest Stable Version Total Downloads Latest Unstable Version License Build Status Code Coverage, (*3)

Depends On

php >=5.5.16
laravel/laravel ^ 5.1

Suggests

php >=7.0.0
ext-swoole >=1.7.21
workerman/workerman >=3.0

Install

To get started, add laravoole to you composer.json file and run composer update:, (*4)

"garveen/laravoole": "^0.5.0"

or just run shell command:, (*5)

 composer require garveen/laravoole

Once composer done its job, you need to register Laravel service provider, in your config/app.php:, (*6)

'providers' => [
    ...
    Laravoole\LaravooleServiceProvider::class,
],

Notice: You should NOT use file session handler, because it is not stable at this environement. Use redis or other handler instead., (*7)

Usage

php artisan laravoole [start | stop | reload | reload_task | restart | quit]

Migrations

Upgrade to 0.4

Event names has changed:, (*8)

  • laravoole.on_request => laravoole.requesting
  • laravoole.on_requested => laravoole.requested
  • laravoole.swoole.websocket.on_close => laravoole.swoole.websocket.closing

Config

To generate config/laravoole.php:, (*9)

php artisan vendor:publish --provider="Laravoole\LaravooleServiceProvider"

Most of things can be configured with .env, and you should use LARAVOOLE_{UPPER_CASE} format, for example,, (*10)

[
    'base_config' => [
        'host' => '0.0.0.0',
    ]
]

is equals with, (*11)

LARAVOOLE_HOST=0.0.0.0

Events

You can handle events by editing EventServiceProvider:, (*12)

public function boot()
{
    parent::boot();
    \Event::listen('laravoole.requesting', function ($request) {
        \Log::info($request->segments());
    });
}
  • laravoole.requesting(Illuminate\Http\Request)
  • laravoole.requested(Illuminate\Http\Request, Illuminate\Http\Response)
  • laravoole.swoole.websocket.closing(Laravoole\Request, int $fd)

base_config

This section configures laravoole itself., (*13)

mode

SwooleHttp uses swoole to response http requests, (*14)

SwooleFastCGI uses swoole to response fastcgi requests (just like php-fpm), (*15)

SwooleWebSocket uses swoole to response websocket requests AND http requests, (*16)

WorkermanFastCGI uses workerman to response fastcgi requests (just like php-fpm), (*17)

user defined wrappers

You can make a new wrapper implements Laravoole\Wrapper\ServerInterface, and put its full class name to mode., (*18)

pid_file

Defines a file that will store the process ID of the main process., (*19)

deal_with_public

When using Http mode, you can turn on this option to let laravoole send static resources to clients. Use this ONLY when developing., (*20)

host and port

Default host is 127.0.0.1, and port is 9050, (*21)

handler_config

This section configures the backend, e.g. swoole or workerman., (*22)

Swoole

As an example, if want to set worker_num to 8, you can set .env:, (*23)

 LARAVOOLE_WORKER_NUM=8

or set config/laravoole.php:, (*24)

[
    'handler_config' => [
        'worker_num' => 8,
    ]
]

See Swoole's document:, (*25)

简体中文, (*26)

English, (*27)

Workerman

As an example, if want to set worker_num to 8, you can set .env:, (*28)

 LARAVOOLE_COUNT=8

or set config/laravoole.php:, (*29)

[
    'handler_config' => [
        'count' => 8,
    ]
]

See Workerman's document:, (*30)

简体中文, (*31)

English, (*32)

Websocket Usage

Subprotocols

See Mozilla's Document: Writing WebSocket server, (*33)

The default subprotocol is jsonrpc, but has some different: params is an object, and two more properties:, (*34)

status as HTTP status code, (*35)

method is the same as request's method, (*36)

You can define your own subprotocol, by implements Laravoole\WebsocketCodec\CodecInterface and add to config/laravoole.php., (*37)

Client Example:

<!DOCTYPE html>
<meta charset="utf-8" />
<title>WebSocket Test</title>
<style>
p{word-wrap: break-word;}
tr:nth-child(odd){background-color: #ccc}
tr:nth-child(even){background-color: #eee}
</style>


WebSocket Test

</html>

Work with nginx

server {
    listen       80;
    server_name  localhost;

    root /path/to/laravel/public;

    location / {
            try_files $uri $uri/ @laravoole;
            index  index.html index.htm index.php;
        }

    # http
    location @laravoole {
        proxy_set_header   Host $host:$server_port;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;

        proxy_pass http://127.0.0.1:9050;
    }

    # fastcgi
    location @laravoole {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9050;
    }

    # websocket
    # send close if there has not an upgrade header
    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
    location /websocket {
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
        proxy_pass http://127.0.0.1:9050;
        proxy_http_version 1.1;
        proxy_set_header Upgrade    $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

License

MIT, (*38)

The Versions

10/11 2017

dev-master

9999999-dev

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gavin

laravel swoole workerman

14/03 2017

0.5.1

0.5.1.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gavin

laravel swoole workerman

12/03 2017

0.5.0

0.5.0.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gavin

laravel swoole workerman

09/03 2017

0.4.1

0.4.1.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gavin

laravel swoole workerman

09/03 2017

0.4.0

0.4.0.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gavin

laravel swoole workerman

09/03 2017

0.3.1

0.3.1.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

09/03 2017

0.3.0

0.3.0.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

08/03 2017

0.2.8

0.2.8.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

23/02 2017

0.2.7

0.2.7.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

10/02 2017

0.2.6

0.2.6.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

28/01 2017

dev-split-fastcgi

dev-split-fastcgi

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

24/01 2017

0.2.5

0.2.5.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

11/01 2017

0.2.4

0.2.4.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

11/01 2017

0.2.3

0.2.3.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

21/11 2016

dev-fix-autoload

dev-fix-autoload

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

21/11 2016

0.2.2

0.2.2.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

21/11 2016

0.2.1

0.2.1.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

18/10 2016

dev-dev-5.3

dev-dev-5.3

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

24/08 2016

dev-ws

dev-ws

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

23/08 2016

0.2.0

0.2.0.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

04/02 2016

0.1.9

0.1.9.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

06/01 2016

dev-psr4

dev-psr4

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

06/01 2016

0.1.8

0.1.8.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

22/12 2015

0.1.7

0.1.7.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole workerman

19/12 2015

0.1.6

0.1.6.0

Laravel & Swoole

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole

01/12 2015

0.1.5

0.1.5.0

Laravel & Swoole

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole

29/11 2015

0.1.4

0.1.4.0

Laravel & Swoole

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole

29/11 2015

0.1.3

0.1.3.0

Laravel & Swoole

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole

29/11 2015

0.1.2

0.1.2.0

Laravel & Swoole

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole

29/11 2015

0.1.1

0.1.1.0

Laravel & Swoole

  Sources   Download

MIT

The Requires

 

by Gavin

laravel swoole

29/11 2015

0.1.0

0.1.0.0

Laravel & Swoole

  Sources   Download

MIT

The Requires

  • php >=5.5.9
  • ext-swoole >=1.7.19

 

by Gavin