fix realtime update

This commit is contained in:
Saeed Vaziry 2023-08-11 17:01:46 +02:00
parent a24d90e697
commit 6e8d0924e4
5 changed files with 28 additions and 14 deletions

View File

@ -15,12 +15,16 @@ DB_USERNAME=
DB_PASSWORD= DB_PASSWORD=
BROADCAST_DRIVER=pusher BROADCAST_DRIVER=pusher
CACHE_DRIVER=array CACHE_DRIVER=redis
FILESYSTEM_DRIVER=local FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=default QUEUE_CONNECTION=default
SESSION_DRIVER=database SESSION_DRIVER=database
SESSION_LIFETIME=120 SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp MAIL_MAILER=smtp
MAIL_HOST=mailhog MAIL_HOST=mailhog
MAIL_PORT=1025 MAIL_PORT=1025

View File

@ -11,24 +11,31 @@ class ContinueInstallation extends InstallationJob
protected int $attempts; protected int $attempts;
public function __construct(Server $server) public function __construct(Server $server, int $attempts = 0)
{ {
$this->server = $server; $this->server = $server;
$this->attempts = 2; $this->attempts = $attempts;
} }
public function handle(): void public function handle(): void
{ {
if ($this->server->provider()->isRunning()) { if ($this->server->provider()->isRunning()) {
$this->server->install(); $this->server->install();
} else { return;
$this->attempts--;
if ($this->attempts > 0) {
sleep(120);
$this->handle();
} else {
event(new Broadcast('install-server-failed', $this->server->toArray()));
}
} }
if ($this->attempts >= 2) {
$this->server->update([
'status' => 'installation_failed',
]);
event(
new Broadcast('install-server-failed', [
'server' => $this->server,
])
);
return;
}
dispatch(new self($this->server, $this->attempts++))->delay(now()->addMinute());
} }
} }

View File

@ -4,13 +4,12 @@
use App\Jobs\LongJob; use App\Jobs\LongJob;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
abstract class InstallationJob implements ShouldQueue, ShouldBeUnique abstract class InstallationJob implements ShouldQueue
{ {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
use LongJob; use LongJob;

View File

@ -92,6 +92,9 @@ if ! echo "${V_NGINX_CONFIG}" | tee /etc/nginx/nginx.conf; then
fi fi
service nginx start service nginx start
# redis
apt install redis-server -y
# php # php
export V_PHP_VERSION="8.1" export V_PHP_VERSION="8.1"
add-apt-repository ppa:ondrej/php -y add-apt-repository ppa:ondrej/php -y

View File

@ -2,7 +2,8 @@
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vite build" "build": "vite build",
"queue:listen": "php artisan queue:listen --timeout=600 --queue=default,ssh,ssh-long"
}, },
"devDependencies": { "devDependencies": {
"@ryangjchandler/alpine-clipboard": "^2.2.0", "@ryangjchandler/alpine-clipboard": "^2.2.0",