每天laravel-20160711|Event-2

阅读 16

2023-03-02


// 2016-04-11
/* Determine if the filters pass for the event.
*
* @param \Illuminate\Contracts\Foundation\Application $app
* @return bool
*/
public function filtersPass($app)
{
foreach ($this->filters as $callback) {
if (! $app->call($callback)) {
return false;
}
}// big call for

foreach ($this->rejects as $callback) {
if ($app->call($callback)) {
return false;
}
}// another big call

return true;
}// Determine if the filters pass for the event

/**
* Determine if the event runs in the given environment.
*
* @param string $environment
* @return bool
*/
public function runsInEnvironment($environment)
{
return empty($this->environments) || in_array($environment, $this->environments);
}// Determine if the event runs in the given environment.

/**
* Determine if the event runs in maintenance mode.
*
* @return bool
*/
public function runsInMaintenanceMode()
{
return $this->evenInMaintenanceMode;
}//Determine if the event runs in maintenance mode
// like keep run mode
// check of set

/**
* The Cron expression representing the event's frequency.
*
* @param string $expression
* @return $this
*/
public function cron($expression)
{
$this->expression = $expression;

return $this;
}// The Cron expression representing the event's frequency.
// The plan stand for , how many times to the event's run

/**
* Schedule the event to run hourly.
*
* @return $this
*/
public function hourly()
{
return $this->cron('0 * * * * *');
}// Schedule the event to run hourly
// a way to set the expression frequency

/**
* Schedule the event to run daily.
*
* @return $this
*/
public function daily()
{
return $this->cron('0 0 * * * *');
}// Schedule the event to run daily

/**
* Schedule the command at a given time.
*
* @param string $time
* @return $this
*/
public function at($time)
{
return $this->dailyAt($time);
}// Schedule the command at a given time.

/**
* Schedule the event to run daily at a given time (10:00, 19:30, etc).
*
* @param string $time
* @return $this
*/
public function dailyAt($time)
{
$segments = explode(':', $time);

return $this->spliceIntoPosition(2, (int) $segments[0])
->spliceIntoPosition(1, count($segments) == 2 ? (int) $segments[1] : '0');
}// Schedule the event to run daily at a given time (10:00, 19:30,etc)
// change time string to time format.

/**
* Schedule the event to run twice daily.
*
* @param int $first
* @param int $second
* @return $this
*/
public function twiceDaily($first = 1, $second = 13)
{
$hours = $first.','.$second;

return $this->spliceIntoPosition(1, 0)
->spliceIntoPosition(2, $hours);
}// just set the string to the time format

/**
* Schedule the event to run only on weekdays.
*
* @return $this
*/
public function weekdays()
{
return $this->spliceIntoPosition(5, '1-5');
}// Schedule the event to run only on weekdays.
// on weekdays.

/**
* Schedule the event to run only on Mondays.
*
* @return $this
*/
public function mondays()
{
return $this->days(1);
}// on Mondays

/**
* Schedule the event to run only on Tuesdays.
*
* @return $this
*/
public function tuesdays()
{
return $this->days(2);
}// on Tuesdays

/**
* Schedule the event to run only on Wednesdays.
*
* @return $this
*/
public function wednesdays()
{
return $this->days(3);
}// Wednesdays

/**
* Schedule the event to run only on Thursdays.
*
* @return $this
*/
public function thursdays()
{
return $this->days(4);
}// Tursdays

/**
* Schedule the event to run only on Fridays.
*
* @return $this
*/
public function fridays()
{
return $this->days(5);
}// fridays

/**
* Schedule the event to run only on Saturdays.
*
* @return $this
*/
public function saturdays()
{
return $this->days(6);
}// saturdays

/**
* Schedule the event to run only on Sundays.
*
* @return $this
*/
public function sundays()
{
return $this->days(0);
}// Sundays

/**
* Schedule the event to run weekly.
*
* @return $this
*/
public function weekly()
{
return $this->cron('0 0 * * 0 *');
}// weekly time

/**
* Schedule the event to run weekly on a given day and time.
*
* @param int $day
* @param string $time
* @return $this
*/
public function weeklyOn($day, $time = '0:0')
{
$this->dailyAt($time);

return $this->spliceIntoPosition(5, $day);
}// set event run the weely on

/**
* Schedule the event to run monthly.
*
* @return $this
*/
public function monthly()
{
return $this->cron('0 0 1 * * *');
}// run at monthly.

/**
* Schedule the event to run quarterly.
*
* @return $this
*/
public function quarterly()
{
return $this->cron('0 0 1 */3 *');
}// run on quarterly

/**
* Schedule the event to run yearly.
*
* @return $this
*/
public function yearly()
{
return $this->cron('0 0 1 1 * *');
}// run yearly

/**
* Schedule the event to run every minute.
*
* @return $this
*/
public function everyMinute()
{
return $this->cron('* * * * * *');
}// run minute

/**
* Schedule the event to run every five minutes.
*
* @return $this
*/
public function everyFiveMinutes()
{
return $this->cron('*/5 * * * * *');
}// every five minutes.

/**
* Schedule the event to run every ten minutes.
*
* @return $this
*/
public function everyTenMinutes()
{
return $this->cron('*/10 * * * * *');
}// every Ten minutes

/**
* Schedule the event to run every thirty minutes.
*
* @return $this
*/
public function everyThirtyMinutes()
{
return $this->cron('0,30 * * * * *');
}// every thirty minutes

/**
* Set the days of the week the command should run on.
*
* @param array|mixed $days
* @return $this
*/
public function days($days)
{
$days = is_array($days) ? $days : func_get_args();

return $this->spliceIntoPosition(5, implode(',', $days));
}// Set the days of the week the command should run on.
// has a way to get all variable function is func_get_args()
// change the string to you want

/**
* Set the timezone the date should be evaluated on.
*
* @param \DateTimeZone|string $timezone
* @return $this
*/
public function timezone($timezone)
{
$this->timezone = $timezone;

return $this;
}// set time use "this" mode a big set

/**
* Set which user the command should run as.
*
* @param string $user
* @return $this
*/
public function user($user)
{
$this->user = $user;

return $this;
}// Set which user the command should run as.

/**
* 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;
}// limit the environments the command should run in.

/**
* State that the command should run even in maintenance mode.
*
* @return $this
*/
public function evenInMaintenanceMode()
{
$this->evenInMaintenanceMode = true;

return $this;
}// set a flag about the event mode, its in the maintenance

/**
* Do not allow the event to overlap each other.
*
* @return $this
*/
public function withoutOverlapping()
{
$this->withoutOverlapping = true;

return $this->skip(function () {
return file_exists($this->mutexPath());
});
}// Do not allow the event to overlap each other.

/**
* Register a callback to further filter the schedule.
*
* @param \Closure $callback
* @return $this
*/
public function when(Closure $callback)
{
$this->filters[] = $callback;

return $this;
}// Register a callback to further filter the schedule.

/**
* Register a callback to further filter the schedule.
*
* @param \Closure $callback
* @return $this
*/
public function skip(Closure $callback)
{
$this->rejects[] = $callback;

return $this;
}// set the rejects to further filter the schedule.

/**
* Send the output of the command to a given location.
*
* @param string $location
* @param bool $append
* @return $this
*/
public function sendOutputTo($location, $append = false)
{
$this->output = $location;

$this->shouldAppendOutput = $append;

return $this;
}// set the output of the command to a given location.

/**
* Append the output of the command to a given location.
*
* @param string $location
* @return $this
*/
public function appendOutputTo($location)
{
return $this->sendOutputTo($location, true);
}// Append the output of the command to a given location.
// use api method

/**
* E-mail the results of the scheduled operation.
*
* @param array|mixed $addresses
* @param bool $onlyIfOutputExists
* @return $this
*
* @throws \LogicException
*/
public function emailOutputTo($addresses, $onlyIfOutputExists = false)
{
if (is_null($this->output) || $this->output == $this->getDefaultOutput()) {
throw new LogicException('Must direct output to a file in order to e-mail results.');
}// check the logicException

$addresses = is_array($addresses) ? $addresses : func_get_args();// get args

return $this->then(function (Mailer $mailer) use ($addresses, $onlyIfOutputExists) {
$this->emailOutput($mailer, $addresses, $onlyIfOutputExists);
});// get the right way to send a email
}// send out in email

/**
* E-mail the results of the scheduled operation if it produces output.
*
* @param array|mixed $addresses
* @return $this
*
* @throws \LogicException
*/
public function emailWrittenOutputTo($addresses)
{
return $this->emailOutputTo($addresses, true);
}// Email the results of the scheduled operation if it produces output.

/**
* E-mail the output of the event to the recipients.
*
* @param \Illuminate\Contracts\Mail\Mailer $mailer
* @param array $addresses
* @param bool $includeEmpty
* @return void
*/
protected function emailOutput(Mailer $mailer, $addresses, $onlyIfOutputExists = false)
{
$text = file_get_contents($this->output);

if ($onlyIfOutputExists && empty($text)) {
return;
}

$mailer->raw($text, function ($m) use ($addresses) {
$m->subject($this->getEmailSubject());

foreach ($addresses as $address) {
$m->to($address);
}
});
}//Email the output to get the recipients person.

/**
* Get the e-mail subject line for output results.
*
* @return string
*/
protected function getEmailSubject()
{
if ($this->description) {
return 'Scheduled Job Output ('.$this->description.')';
}

return 'Scheduled Job Output';
}// get the send email result , get the result about

/**
* Register a callback to ping a given URL before the job runs.
*
* @param string $url
* @return $this
*/
public function pingBefore($url)
{
return $this->before(function () use ($url) {
(new HttpClient)->get($url);
});
}// register a callback to ping a given URL before the job runs.

/**
* Register a callback to be called before the operation.
*
* @param \Closure $callback
* @return $this
*/
public function before(Closure $callback)
{
$this->beforeCallbacks[] = $callback;

return $this;
}// Register a callback to be called before the operation.

/**
* Register a callback to ping a given URL after the job runs.
*
* @param string $url
* @return $this
*/
public function thenPing($url)
{
return $this->then(function () use ($url) {
(new HttpClient)->get($url);
});
}// Register a call

/**
* Register a callback to be called after the operation.
*
* @param \Closure $callback
* @return $this
*/
public function after(Closure $callback)
{
return $this->then($callback);
}// api

/**
* Register a callback to be called after the operation.
*
* @param \Closure $callback
* @return $this
*/
public function then(Closure $callback)
{
$this->afterCallbacks[] = $callback;

return $this;
}// set array store

/**
* 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.

/**
* Set the human-friendly description of the event.
*
* @param string $description
* @return $this
*/
public function description($description)
{
$this->description = $description;

return $this;
}//set description

/**
* Splice the given value into the given position of the expression.
*
* @param int $position
* @param string $value
* @return $this
*/
protected function spliceIntoPosition($position, $value)
{
$segments = explode(' ', $this->expression);

$segments[$position - 1] = $value;

return $this->cron(implode(' ', $segments));
}// set format

/**
* Get the summary of the event for display.
*
* @return string
*/
public function getSummaryForDisplay()
{
if (is_string($this->description)) {
return $this->description;
}

return $this->buildCommand();
}// the the description

/**
* Get the Cron expression for the event.
*
* @return string
*/
public function getExpression()
{
return $this->expression;
}// get E
}


精彩评论(0)

0 0 举报