Reference
In This Article
Migration
This document covers changes between version 1 and version 2, and how you may update your code to adapt to them.
Controlling the server
In version 1, you would execute the web server via the entry script, e.g.:
$ php public/index.php start
With version 2, we ship the command line tools for controlling your server via
the binary zend-expressive-swoole
:
# Start the server:
$ ./vendor/bin/zend-expressive-swoole start -d
# Reload the server:
$ ./vendor/bin/zend-expressive-swoole reload
# Stop the server:
$ ./vendor/bin/zend-expressive-swoole stop
While you can still call php public/index.php
, you cannot daemonize the server
using that command, nor reload or stop it (other than using Ctrl-C
). You will
need to change any deployment commands you currently use to consume the new
command line tooling.
Coroutine support
In version 1, to enable Swoole's coroutine support, you were expected to pass a
boolean true value to the
zend-expressive-swoole.swoole-http-server.options.enable_coroutine
flag.
That flag now controls specifically the HTTP server coroutine support, and
defaults to true
. To set system-wide coroutine support, toggle the
zend-expressive-swoole.enable_coroutine
flag, which defaults to boolean false:
return [
'zend-expressive-swoole' => [
'enable_coroutine' => false, // system-wide support
'swoole-http-server' => [
'options' => [
'enable_coroutine' => true, // HTTP server coroutine support
],
],
]
];
ServerFactory
Version 2 refactors the architecture slightly to allow providing the HTTP server as a service, which allows us to enable async task workers.
The primary changes to enable this are:
Zend\Expressive\Swoole\ServerFactory
and its associated service was removed.Zend\Expressive\Swoole\ServerFactoryFactory
was removed.Zend\Expressive\Swoole\HttpServerFactory
was created.- The service
Swoole\Http\Server
was added, pointing toZend\Expressive\Swoole\HttpServerFactory
. - The constructor for
Zend\Expressive\Swoole\SwooleRequestHandlerRunner
was modified. Previously, the fifth argument was typehinted against the formerServerFactory
; it now typehints againstSwoole\Http\Server
. The factory for this class was modified to pass the correct service.
These changes should only affect users who were providing service substitutions or extending the affected classes.
Found a mistake or want to contribute to the documentation? Edit this page on GitHub!