static
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace Lucent\Http\Controller;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Lucent\Channel\ChannelService;
|
||||
use Lucent\Svelte\Svelte;
|
||||
use function Lucent\Response\ok;
|
||||
|
||||
class BuildController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
public readonly Svelte $svelte,
|
||||
public readonly ChannelService $channelService,
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
public function build()
|
||||
{
|
||||
exec("cd ".base_path(). " && php8.2 artisan {$this->channelService->channel->generateCommand} > /dev/null 2>&1 & echo $!",$op);
|
||||
$pid = (int)$op[0];
|
||||
return redirect($this->channelService->channel->lucentUrl . "/build-report");
|
||||
}
|
||||
|
||||
public function report(): View
|
||||
{
|
||||
|
||||
return $this->svelte->render(
|
||||
layout: "channel",
|
||||
view: "buildReport",
|
||||
title: "Build Report",
|
||||
);
|
||||
}
|
||||
|
||||
public function reportSource()
|
||||
{
|
||||
return response()->stream(function () {
|
||||
while (true) {
|
||||
$curDate = time();
|
||||
echo 'data: {"time": "' . $curDate . '"}';
|
||||
echo "\n\n";
|
||||
logger( $curDate);
|
||||
|
||||
ob_flush();
|
||||
flush();
|
||||
|
||||
// Break the loop if the client aborted the connection (closed the page)
|
||||
if (connection_aborted()) {break;}
|
||||
sleep(2); // 50ms
|
||||
}
|
||||
}, 200, [
|
||||
'Cache-Control' => 'no-cache',
|
||||
'X-Accel-Buffering' => 'no',
|
||||
'Content-Type' => 'text/event-stream',
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user