38 lines
950 B
PHP
38 lines
950 B
PHP
<?php
|
|
|
|
namespace App\Actions\Application;
|
|
|
|
use Laravel\Horizon\Contracts\JobRepository;
|
|
use Lorisleiva\Actions\Concerns\AsAction;
|
|
|
|
class IsHorizonQueueEmpty
|
|
{
|
|
use AsAction;
|
|
|
|
public function handle()
|
|
{
|
|
$hostname = gethostname();
|
|
$recent = app(JobRepository::class)->getRecent();
|
|
if ($recent) {
|
|
$running = $recent->filter(function ($job) use ($hostname) {
|
|
$payload = json_decode($job->payload);
|
|
$tags = data_get($payload, 'tags');
|
|
|
|
return $job->status != 'completed' &&
|
|
$job->status != 'failed' &&
|
|
isset($tags) &&
|
|
is_array($tags) &&
|
|
in_array('server:'.$hostname, $tags);
|
|
});
|
|
if ($running->count() > 0) {
|
|
echo 'false';
|
|
|
|
return false;
|
|
}
|
|
}
|
|
echo 'true';
|
|
|
|
return true;
|
|
}
|
|
}
|