2017 © Pedro Peláez
 

library laravoole

Get 10x performance for Laravel on Swoole or Workerman

image

jyj1993126/laravoole

Get 10x performance for Laravel on Swoole or Workerman

  • Tuesday, January 10, 2017
  • by jyj1993126
  • Repository
  • 1 Watchers
  • 0 Stars
  • 10 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 144 Forks
  • 0 Open issues
  • 18 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

base_config

This section configures laravoole itself., (*10)

mode

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

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

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

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

pid_file

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

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

host and port

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

handler_config

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

Swoole

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

 LARAVOOLE_WORKER_NUM=8

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

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

See Swoole's document:, (*21)

简体中文, (*22)

English, (*23)

Workerman

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

 LARAVOOLE_COUNT=8

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

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

See Workerman's document:, (*26)

简体中文, (*27)

English, (*28)

Websocket Usage

Subprotocols

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

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

status as HTTP status code, (*31)

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

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

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

The Versions

10/01 2017

dev-master

9999999-dev

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