From b0fa2e3d868ef14abb2fee7540335bca8ce59228 Mon Sep 17 00:00:00 2001 From: Ivan Koryukov Date: Sun, 23 Oct 2022 14:14:40 +0300 Subject: [PATCH] change server name, add show_error option --- README.md | 10 ++++++---- bin/{swoole-server-dev => urgent-swoole-server} | 0 composer.json | 2 +- src/EmergencyWorker.php | 12 +++++++++++- src/OnWorkerStart.php | 2 +- 5 files changed, 19 insertions(+), 7 deletions(-) rename bin/{swoole-server-dev => urgent-swoole-server} (100%) diff --git a/README.md b/README.md index ab1452f..4048f5b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Laravel Octane dev server starter +# Alternative Laravel Octane swoole server starter -With this package your swoole dev server continue work even if you change code with syntax error. +With this package your swoole server continue work even if you change code with syntax error. Original server stops in this case. ## Installation @@ -12,11 +12,13 @@ composer install ensi/laravel-octane-starter and add this section to **config/octane.php** file ``` 'swoole' => [ - 'command' => '/var/www/vendor/bin/swoole-server-dev' + 'command' => '/var/www/vendor/bin/urgent-swoole-server', + 'show_fatal_error' => env('OCTANE_SHOW_FATAL_ERROR', false), ] ``` ## Usage Just start octane server with swoole backend and --watch option, -and see how it reloads after very fatal errors. \ No newline at end of file +and see how it reloads after very fatal errors. +If you want to see error message in http response, set true to OCTANE_SHOW_FATAL_ERROR environment variable. \ No newline at end of file diff --git a/bin/swoole-server-dev b/bin/urgent-swoole-server similarity index 100% rename from bin/swoole-server-dev rename to bin/urgent-swoole-server diff --git a/composer.json b/composer.json index 54fab9a..b905902 100644 --- a/composer.json +++ b/composer.json @@ -13,6 +13,6 @@ "filp/whoops": "^2.14" }, "bin": [ - "bin/swoole-server-dev" + "bin/urgent-swoole-server" ] } diff --git a/src/EmergencyWorker.php b/src/EmergencyWorker.php index 51ee549..86a2bf2 100644 --- a/src/EmergencyWorker.php +++ b/src/EmergencyWorker.php @@ -20,6 +20,7 @@ class EmergencyWorker implements Worker public function __construct( protected Client $client, protected Throwable $exception, + protected array $serverState, ) { $this->whoops = new Run(); $this->whoops->allowQuit(false); @@ -32,11 +33,20 @@ public function handle(Request $request, RequestContext $context): void $response = new Response(); $response->setStatusCode(500); $response->headers->add(['Content-Type' => 'text/plain']); - $response->setContent($this->whoops->handleException($this->exception)); + if ($this->showError()) { + $response->setContent($this->whoops->handleException($this->exception)); + } else { + $response->setContent('Server error.'); + } $this->client->respond($context, new OctaneResponse($response)); } + private function showError(): bool + { + return $this->serverState['octaneConfig']['swoole']['show_fatal_error'] ?? false; + } + public function boot(): void { } diff --git a/src/OnWorkerStart.php b/src/OnWorkerStart.php index bfe8ef0..23d49d0 100644 --- a/src/OnWorkerStart.php +++ b/src/OnWorkerStart.php @@ -28,7 +28,7 @@ protected function bootWorker($server): WorkerContract ]); } catch (Throwable $e) { Stream::throwable($e); - return new EmergencyWorker($this->workerState->client, $e); + return new EmergencyWorker($this->workerState->client, $e, $this->serverState); } }