2017 © Pedro Peláez
 

library laravoole

Get 10x performance for Laravel on Swoole or Workerman

image

puper/laravoole

Get 10x performance for Laravel on Swoole or Workerman

  • Thursday, March 2, 2017
  • by puper
  • Repository
  • 1 Watchers
  • 0 Stars
  • 2 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 144 Forks
  • 0 Open issues
  • 20 Versions
  • 0 % Grown

The README.md

Laravoole

Laravel on Swoole Or Workerman, (*1)

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

Depends On

php >=5.5.16
laravel/framework 5.1.* | 5.2.* | 5.3.*

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:, (*3)

"garveen/laravoole": "~0.2"

or just run shell command:, (*4)

 composer require garveen/laravoole

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

'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., (*6)

Usage

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

Config

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

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,, (*8)

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

is equals with, (*9)

LARAVOOLE_HOST=0.0.0.0

Events

By now, there are only two events, laravoole.on_request and laravoole.swoole.websocket.on_close. You can handle events by editing EventServiceProvider:, (*10)

public function boot()
{
    parent::boot();
    \Event::listen('laravoole.on_request', function ($request) {
        \Log::info($request->segments());
    });
}

base_config

This section configures laravoole itself., (*11)

mode

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

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

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

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

pid_file

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

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., (*17)

host and port

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

handler_config

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

Swoole

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

 LARAVOOLE_WORKER_NUM=8

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

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

See Swoole's document:, (*22)

简体中文, (*23)

English, (*24)

Workerman

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

 LARAVOOLE_COUNT=8

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

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

See Workerman's document:, (*27)

简体中文, (*28)

English, (*29)

Websocket Usage

Subprotocols

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

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

status as HTTP status code, (*32)

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

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

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, (*35)

The Versions

02/03 2017

dev-master

9999999-dev

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Pu Pu

laravel swoole workerman

02/03 2017

0.5.0

0.5.0.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Pu Pu

laravel swoole workerman

23/01 2017

v1.0.0

1.0.0.0

Get 10x performance for Laravel on Swoole or Workerman

  Sources   Download

MIT

The Requires

 

by Pu Pu

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