Skip to content

Commit 5c2da89

Browse files
committed
update readme
1 parent 21d3dca commit 5c2da89

File tree

2 files changed

+85
-69
lines changed

2 files changed

+85
-69
lines changed

README.md

Lines changed: 83 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010

1111
* PHP ^7.4|^8.0
1212
* Antidot Framework
13+
* DriftPHP Server
1314
* React Http
15+
* React Promises
1416
* Ramsey Uuid
1517

1618
## Description
@@ -74,78 +76,91 @@ $aggregator = new ConfigAggregator([
7476
return $aggregator->getMergedConfig();
7577
```
7678

77-
The create your React Http server
79+
Default Config:
7880

7981
```php
80-
#!/usr/bin/env php
8182
<?php
82-
// public/index.php or everywhere you want to allocate your server
8383

84-
declare(strict_types=1);
84+
$config = [
85+
'server' => [
86+
'host' => '0.0.0.0',
87+
'port' => 5555,
88+
'buffer_size' => 4096,
89+
'max_concurrency' => 100,
90+
'workers' => 1,
91+
'static_folder' => 'public'
92+
]
93+
]
94+
95+
```
96+
97+
### Usage
98+
99+
Two new commands will be added to the Antidot Framework CLI tool, to allow running the application on top of [Drift server](https://driftphp.io/#/?id=the-server)
100+
101+
* `server:run`: Run Drift HTTP Server
102+
* `server:watch`: Watch Drift HTTP Server for development purposes
103+
104+
```bash
105+
$ bin/console
106+
...
107+
server
108+
server:run Run Drift HTTP Server
109+
server:watch Watch Drift HTTP Server for development purposes
85110

86-
use Antidot\Application\Http\Application;
87-
use Antidot\React\PromiseResponse;
88-
use Laminas\Diactoros\Response\HtmlResponse;
89-
use Psr\Http\Message\ServerRequestInterface;
90-
use Ramsey\Uuid\Uuid;
91-
use React\EventLoop\Factory;
92-
use React\Http\Middleware\LimitConcurrentRequestsMiddleware;
93-
use React\Http\Middleware\RequestBodyBufferMiddleware;
94-
use React\Http\Middleware\RequestBodyParserMiddleware;
95-
use React\Http\Middleware\StreamingRequestMiddleware;
96-
use React\Http\Server;
97-
use React\Socket\Server as Socket;
98-
use function React\Promise\resolve;
99-
100-
require 'vendor/autoload.php';
101-
102-
call_user_func(static function () {
103-
$loop = Factory::create();
104-
$container = require 'config/container.php';
105-
$application = $container->get(Application::class);
106-
(require 'router/middleware.php')($application, $container);
107-
(require 'router/routes.php')($application, $container);
108-
109-
$server = new Server(
110-
$loop,
111-
new StreamingRequestMiddleware(),
112-
new LimitConcurrentRequestsMiddleware(100), // 100 concurrent buffering handlers
113-
new RequestBodyBufferMiddleware(4 * 1024 * 1024), // 4 MiB
114-
new RequestBodyParserMiddleware(),
115-
static function (ServerRequestInterface $request) use ($application) {
116-
try {
117-
$response = new PromiseResponse(
118-
resolve($request)
119-
->then(static fn ($request) => $request->withAttribute('request_id', Uuid::uuid4()->toString()))
120-
->then(static fn ($request) => $application->handle($request))
121-
);
122-
} catch (Throwable $exception) {
123-
if (!empty($e = $exception->getPrevious())) {
124-
$exception = $e;
125-
}
126-
127-
$response = new HtmlResponse(
128-
sprintf(
129-
'%s in file %s in line %s.',
130-
$exception->getMessage(),
131-
$exception->getFile(),
132-
$exception->getLine()
133-
)
134-
);
135-
}
136-
137-
return resolve($response);
138-
}
139-
);
140-
141-
$server->on('error', function ($err) {
142-
dump($err);
143-
});
144-
145-
$socket = new Socket('0.0.0.0:8080', $loop);
146-
$server->listen($socket);
147-
148-
$loop->run();
149-
});
111+
```
112+
113+
```bash
114+
$ bin/console server:run -h
115+
Description:
116+
Run Drift HTTP Server
117+
118+
Usage:
119+
server:run [options] [--] [<path>]
120+
121+
Arguments:
122+
path The server will start listening to this address [default: "0.0.0.0:5555"]
123+
124+
Options:
125+
--static-folder[=STATIC-FOLDER] Static folder path [default: "public"]
126+
--no-static-folder Disable static folder
127+
--debug Enable debug
128+
--no-header Disable the header
129+
--no-cookies Disable cookies
130+
--no-file-uploads Disable file uploads
131+
--concurrent-requests[=CONCURRENT-REQUESTS] Limit of concurrent requests [default: 100]
132+
--request-body-buffer[=REQUEST-BODY-BUFFER] Limit of the buffer used for the Request body. In KiB. [default: 4096]
133+
--adapter[=ADAPTER] Server Adapter [default: "Antidot\React\DriftKernelAdapter"]
134+
--allowed-loop-stops[=ALLOWED-LOOP-STOPS] Number of allowed loop stops [default: 0]
135+
--workers[=WORKERS] Number of workers. Use -1 to get as many workers as physical thread available for your system. Maximum of 128 workers. Option disabled for watch command. [default: 16]
136+
-q, --quiet Do not output any message
137+
138+
```
139+
140+
```bash
141+
$ bin/console server:watch -h
142+
Description:
143+
Watch Drift HTTP Server for development purposes
144+
145+
Usage:
146+
server:watch [options] [--] [<path>]
147+
148+
Arguments:
149+
path The server will start listening to this address [default: "0.0.0.0:5555"]
150+
151+
Options:
152+
--static-folder[=STATIC-FOLDER] Static folder path [default: "public"]
153+
--no-static-folder Disable static folder
154+
--debug Enable debug
155+
--no-header Disable the header
156+
--no-cookies Disable cookies
157+
--no-file-uploads Disable file uploads
158+
--concurrent-requests[=CONCURRENT-REQUESTS] Limit of concurrent requests [default: 512]
159+
--request-body-buffer[=REQUEST-BODY-BUFFER] Limit of the buffer used for the Request body. In KiB. [default: 2048]
160+
--adapter[=ADAPTER] Server Adapter [default: "drift"]
161+
--allowed-loop-stops[=ALLOWED-LOOP-STOPS] Number of allowed loop stops [default: 0]
162+
--workers[=WORKERS] Number of workers. Use -1 to get as many workers as physical thread available for your system. Maximum of 128 workers. Option disabled for watch command. [default: 1]
163+
-q, --quiet Do not output any message
150164

151165
```
166+

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@
5454
"test": "phpunit --colors=always"
5555
},
5656
"config": {
57-
"sort-packages": true
57+
"sort-packages": true,
58+
"discard-changes": true
5859
},
5960
"extra": {
6061
"laminas": {

0 commit comments

Comments
 (0)