withoutOverlapping()
,但是好像沒有生效開發(fā)環(huán)境:windows 10, laradock ,Laravel 5.4.36
kernel的代碼
$schedule->command('produce:email')->withoutOverlapping();
命令的代碼
public function handle()
{
$name = mt_rand(10000,99999);
Log::info($name . ':開始運行時間'.date('Y-m-d H:i:s'));
$this->parseAppName();
$this->createQueue();
arsort($this->queue);
if(count($this->queue) <= 0){
return ;
}
foreach ($this->queue as $key => $queue) {
$this->getHistoryId($key,$queue['filter']);
$this->executeAdd($key,$queue);
}
Log::info($name .':結(jié)束運行時間'.date('Y-m-d H:i:s'));
}
輸出的日志文件如下: 80781任務(wù)結(jié)束前系統(tǒng)新開了8個任務(wù)
[2018-07-10 03:23:18] local.INFO: 80781:開始運行時間2018-07-10 03:23:18
[2018-07-10 03:24:07] local.INFO: 91189:開始運行時間2018-07-10 03:24:07
[2018-07-10 03:25:05] local.INFO: 73828:開始運行時間2018-07-10 03:25:05
[2018-07-10 03:26:09] local.INFO: 96934:開始運行時間2018-07-10 03:26:09
[2018-07-10 03:27:06] local.INFO: 79930:開始運行時間2018-07-10 03:27:06
[2018-07-10 03:28:13] local.INFO: 39674:開始運行時間2018-07-10 03:28:13
[2018-07-10 03:29:06] local.INFO: 44935:開始運行時間2018-07-10 03:29:06
[2018-07-10 03:30:16] local.INFO: 40087:開始運行時間2018-07-10 03:30:16
[2018-07-10 03:31:05] local.INFO: 42935:開始運行時間2018-07-10 03:31:05
[2018-07-10 03:31:26] local.INFO: 91189:結(jié)束運行時間2018-07-10 03:31:26
[2018-07-10 03:31:26] local.INFO: 80781:結(jié)束運行時間2018-07-10 03:31:26
問題已經(jīng)解決:
參考@aaronwu的回答
1、storage的權(quán)限以及是否有權(quán)限touch用于schedule的互斥文件;
2、在任務(wù)執(zhí)行出sleep多秒,多次執(zhí)行php artisan schedule:run,查看schedule互斥文件是否生成。
首先檢查了權(quán)限沒問題,有寫權(quán)限沒問題。
其次檢查了schedule互斥文件是否生成
,好吧沒有,有寫權(quán)限然后沒有生成文件,猜想是寫互斥文件的地方以后問題。
File:\vendor\laravel\framework\src\Illuminate\Console\Scheduling\Event.php
這個文件可以看到互斥鎖文件所在的目錄和名稱。
我的是:framework/schedule-755d6620f1985cc92ffef6bd535af9a0f3354c3d
public function mutexName()
{
return 'framework'.DIRECTORY_SEPARATOR.'schedule-'.sha1($this->expression.$this->command);
}
然后查看源碼看到互斥鎖是使用的系統(tǒng)的緩存服務(wù)。猜想是緩存服務(wù)出了問題。
然后查看緩存的配置文件,發(fā)現(xiàn)之前配置的緩存驅(qū)動CACHE_DRIVER=array
修改成file之后就可以了。
File:\vendor\laravel\framework\src\Illuminate\Console\Scheduling\CacheMutex.php
/**
* Create a new overlapping strategy.
*
* @param \Illuminate\Contracts\Cache\Repository $cache
* @return void
*/
public function __construct(Cache $cache)
{
$this->cache = $cache;
}
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團(tuán)項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。