📋 Commit iniziale con: - ✅ Documentazione unificata in docs/ - ✅ Codice Laravel in netgescon-laravel/ - ✅ Script automazione in scripts/ - ✅ Configurazione sync rsync - ✅ Struttura organizzata e pulita 🔄 Versione: 2025.07.19-1644 🎯 Sistema pronto per Git distribuito
234 lines
4.6 KiB
PHP
234 lines
4.6 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Console\Scheduling;
|
|
|
|
use Illuminate\Support\Reflector;
|
|
|
|
trait ManagesAttributes
|
|
{
|
|
/**
|
|
* The cron expression representing the event's frequency.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $expression = '* * * * *';
|
|
|
|
/**
|
|
* How often to repeat the event during a minute.
|
|
*
|
|
* @var int|null
|
|
*/
|
|
public $repeatSeconds = null;
|
|
|
|
/**
|
|
* The timezone the date should be evaluated on.
|
|
*
|
|
* @var \DateTimeZone|string
|
|
*/
|
|
public $timezone;
|
|
|
|
/**
|
|
* The user the command should run as.
|
|
*
|
|
* @var string|null
|
|
*/
|
|
public $user;
|
|
|
|
/**
|
|
* The list of environments the command should run under.
|
|
*
|
|
* @var array
|
|
*/
|
|
public $environments = [];
|
|
|
|
/**
|
|
* Indicates if the command should run in maintenance mode.
|
|
*
|
|
* @var bool
|
|
*/
|
|
public $evenInMaintenanceMode = false;
|
|
|
|
/**
|
|
* Indicates if the command should not overlap itself.
|
|
*
|
|
* @var bool
|
|
*/
|
|
public $withoutOverlapping = false;
|
|
|
|
/**
|
|
* Indicates if the command should only be allowed to run on one server for each cron expression.
|
|
*
|
|
* @var bool
|
|
*/
|
|
public $onOneServer = false;
|
|
|
|
/**
|
|
* The number of minutes the mutex should be valid.
|
|
*
|
|
* @var int
|
|
*/
|
|
public $expiresAt = 1440;
|
|
|
|
/**
|
|
* Indicates if the command should run in the background.
|
|
*
|
|
* @var bool
|
|
*/
|
|
public $runInBackground = false;
|
|
|
|
/**
|
|
* The array of filter callbacks.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $filters = [];
|
|
|
|
/**
|
|
* The array of reject callbacks.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $rejects = [];
|
|
|
|
/**
|
|
* The human readable description of the event.
|
|
*
|
|
* @var string|null
|
|
*/
|
|
public $description;
|
|
|
|
/**
|
|
* Set which user the command should run as.
|
|
*
|
|
* @param string $user
|
|
* @return $this
|
|
*/
|
|
public function user($user)
|
|
{
|
|
$this->user = $user;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Limit the environments the command should run in.
|
|
*
|
|
* @param array|mixed $environments
|
|
* @return $this
|
|
*/
|
|
public function environments($environments)
|
|
{
|
|
$this->environments = is_array($environments) ? $environments : func_get_args();
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* State that the command should run even in maintenance mode.
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function evenInMaintenanceMode()
|
|
{
|
|
$this->evenInMaintenanceMode = true;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Do not allow the event to overlap each other.
|
|
* The expiration time of the underlying cache lock may be specified in minutes.
|
|
*
|
|
* @param int $expiresAt
|
|
* @return $this
|
|
*/
|
|
public function withoutOverlapping($expiresAt = 1440)
|
|
{
|
|
$this->withoutOverlapping = true;
|
|
|
|
$this->expiresAt = $expiresAt;
|
|
|
|
return $this->skip(function () {
|
|
return $this->mutex->exists($this);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Allow the event to only run on one server for each cron expression.
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function onOneServer()
|
|
{
|
|
$this->onOneServer = true;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* State that the command should run in the background.
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function runInBackground()
|
|
{
|
|
$this->runInBackground = true;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Register a callback to further filter the schedule.
|
|
*
|
|
* @param \Closure|bool $callback
|
|
* @return $this
|
|
*/
|
|
public function when($callback)
|
|
{
|
|
$this->filters[] = Reflector::isCallable($callback) ? $callback : function () use ($callback) {
|
|
return $callback;
|
|
};
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Register a callback to further filter the schedule.
|
|
*
|
|
* @param \Closure|bool $callback
|
|
* @return $this
|
|
*/
|
|
public function skip($callback)
|
|
{
|
|
$this->rejects[] = Reflector::isCallable($callback) ? $callback : function () use ($callback) {
|
|
return $callback;
|
|
};
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Set the human-friendly description of the event.
|
|
*
|
|
* @param string $description
|
|
* @return $this
|
|
*/
|
|
public function name($description)
|
|
{
|
|
return $this->description($description);
|
|
}
|
|
|
|
/**
|
|
* Set the human-friendly description of the event.
|
|
*
|
|
* @param string $description
|
|
* @return $this
|
|
*/
|
|
public function description($description)
|
|
{
|
|
$this->description = $description;
|
|
|
|
return $this;
|
|
}
|
|
}
|