- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Laravel 中,在我的内核中,我有:
protected $commands = [
Commands\SendRenewEmails::class,
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
$schedule->command('renew:emails')
->daily();
}
上述函数 renew:emails
,如果我通过 Artisan 手动运行它,它会按预期工作。
在我的 crontab 中我有:
* */8 * * * cd /path-to-my-project && php artisan schedule:run >> /dev/null 2>&1
我让它每 8 小时运行一次,而不是在 * * * * *
每分钟运行一次,因为这是实时测试,只是为了确保任务不是每分钟运行一次。
那么 Laravel 如何知道何时在内核上运行日常工作,以及何时发生?
从这个设置(这似乎是 Laravel 中 cronjobs 的基本设置,但每分钟而不是每 8 小时运行一次),没有日志(我可以看到),也没有数据库中的表来跟踪
所以如果我在哪里将我的 cron 设置为 * * * * *
,Laravel 怎么知道不每分钟运行计划的作业,只是因为我已经把->daily();
在作业结束时?
当我有 daily();
时,那是什么具体时间? hourly();
具体是几点?
长话短说:Laravel 如何知道如果不应该再次运行相同的作业,例如使用 daily();
规则?这些信息存储在哪里?如果我的 cronjobs std:out
的 php artisan schedule:run
每分钟?
最佳答案
在底层,Laravel Scheduler 使用 https://github.com/dragonmantank/cron-expression要确定命令或作业是否计划在给定的分钟运行,调用 schedule:run
。
您安排的每个任务都会转化为一个 cron expression ,然后传递到包中。然后针对该表达式运行名为 isDue
的方法以确定它是否应该运行。因此,如果您将任务设置为 hourly
运行,那么 isDue
将在整点结束时产生 true,Laravel 将在 cron 周期内执行任务。
因此,信息不需要存储在任何地方,因为决定是即时完成的。
这也可能让你想知道如果你有一个可能需要比间隔更长的长时间运行的任务会发生什么。这就是 withoutOverlapping
发挥作用的地方。当被调用时,它会在任务最初运行时创建所谓的互斥锁,类似于某种“锁”(有关更多信息,请参见 What is a mutex?)。如果在后续周期中某个特定任务已经存在互斥量,则意味着该任务当前正在另一个周期中运行,不应在此周期中再次触发。
互斥存储在哪里?简单:Laravel 将它们存储在缓存中,当互斥任务完成时,互斥锁将从缓存中删除。如此循环下去。
我可以在这里详细介绍更多细节,但我认为这在很大程度上回答了您的问题。
关于Laravel Scheduler 和 Cron - Laravel 如何知道不运行基于 daily()、hourly() 等的计划作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62023526/
每小时整点的 cron 表达式是什么?我试过这个'0 0 *? * *' 但它抛出了一个错误我有一个 Azure 函数计时器触发器 下面的表达式每分钟运行一次。 public static void
这个问题已经有答案了: flot display the date in flot based on timestamp (4 个回答) 已关闭 7 年前。 我的图表上有以下几点: data = [
我正在尝试使用 the schedule module在不断更新的脚本中进行一些基本的调度。 有没有办法设置每“x”小时运行一次的计划,“准时”? 例如,我希望有一个运行时间为:[1:02pm, 2:
我有这样的日记表结构: CREATE TABLE Diary ( [IdDiary] bigint, [IdDay] numeric(18,0) ); INSERT INTO Di
我正在寻找一个字符串 (mysql),它可以正确地计算总时间的几个小时。分钟。我找不到任何合适的东西。 例子: id| time_spent| 1 | 10.15 | 2 | 10.15
是否可以在 ruby 中将“1.hour”字符串转换为 1.hour,将“2.hours”转换为 2.hours?实际上我是从表单的下拉列表中获取这个值的。我想通过这样的方式将它添加到 Time.
假设我有以下疑问: d1 = service.data().ga().get( ids='ga:xxxxxxx', start_date='2016-04-25',
我需要能够以 15 分钟的增量在不同的显示类型中显示我拥有的数据。我有两个问题给我带来了麻烦。一个以半小时为单位显示数据,另一个以小时为单位显示数据。唯一的问题是查询之间的数据总数会发生变化。它不计算
在 shell 中,当我打印这个时 date -d "2016-11-23 13:05 -1 hours " "+%Y-%m-%d %H:00:00" 我得到 2016-11-23 23:00:00
我正在使用this example来自 highcharts,但我需要按如下方式调整: 让 x 轴显示从当前小时开始的当前 24 小时(我能够绘制 24 小时,但不能从当前小时开始绘制) xAxis
我正在尝试将 UTC 日期转换为当前时区,但我注意到一个时间问题。 我在塔希提岛/法属波利尼西亚 (UTC-10),当前时间(使用格式:yyyy/MM/dd HH:mm:ss)是:2018/08/05
我正在使用 JSON 将数据获取到我的数据库。有没有办法在图表更新时将 xAxis 转到 6 小时前、5 小时前、4 小时前、3 小时前、2 小时前、1 小时前?因为我正在使用 LM35 将温度导入到
大家好,我对 psql 有点陌生,需要收集一些我不确定是否可行的数据。 所以我有 7 天的数据。列是 用户编号 导入日期 范围_1_99 范围_100_149 范围_150_199 范围_200_24
我有一个大的 txt 文件空间分隔,我将其分成 18 个较小的文件(每个文件都有自己的列数)。此拆分基于分隔符,即每当时间戳达到午夜时。如此有效,我将以以下形式得到 18 个文件(请注意,忽略破折号和
Heroku says (免费) Must sleep 6 hours in a 24 hour period 好的,没问题。 但是我可以影响向用户显示的消息或任何文本,例如:“您好,用户,不幸的是,
在 Javascript 中,我有 4 个带有值的变量。 以下是示例: var start_hour = 1; var start_minute = 00; var end_hour = 6; var
我想显示以小时、分钟和秒为单位的时间长度,其中有些时间长度大于 24 小时。目前我正在尝试这个: $timeLength = new DateTime(); $timeLength->setTime(
在中五的S周两小时练习题中,代码正确地给出了总课时,但尽管使用了浮动,它还是截断了每周的平均课时。我哪里错了?。当出现提示并输入A时,我输入了每周花费的周和小时数,但它只输出一个整数值,而不是浮点数。
例如,我想解析下面的字符串: Tue Sep 28 18:02:24 GMT+08:00 2010 我使用 SimpleDateFormat 的模式: new SimpleDateFormat("EE
我正在开发应用程序,该应用程序已成功完成并上线。现在,我在该应用程序中发现了一个错误,因为我正在根据用户的当前时间管理项目。就像时间是用元素可用或不可用来定义的,元素只会在那个可用的时间可见。时间随该
我是一名优秀的程序员,十分优秀!