2015-10-05 137 views
1

我正在嘗試Laravel 5.1任務計劃在IIS上工作。當我使用Windows任務管理器運行批處理文件時,它只會運行一次任務。我怎麼能 - > everyMinute()工作?Laravel 5.1 Windows上的任務計劃

的Windows批處理文件:

cd c:\inetpub\myapp 
c:\PROGRA~2\PHP\php.exe artisan schedule:run 1>> NUL 2>&1 

內核:

class Kernel extends ConsoleKernel 
{ 
    protected $commands = [ 

     \App\Console\Commands\MyCommand::class, 

    ]; 

    protected function schedule(Schedule $schedule) 
    { 
     $schedule->command('test')->everyMinute(); 
    } 
} 

命令:

public function handle() 
    { 
     log::info('test'); 
    } 

回答

4

看看在task scheduler文檔。

啓動該調度

以下是你需要添加到您的服務器的唯一cron項:

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

這cron將會調用Laravel調度命令的每一分鐘。然後,Laravel評估您的計劃任務並運行到期的任務。

在你的情況,你可以使用Windows任務調度程序,而不是克朗,但最重要的事情就是打電話artisan schedule:run每一分鐘。每次運行此命令時,都會檢查其時間表並運行添加的適當任務/命令。

artisan schedule:run不會啓動一個長時間運行的進程,它會一直運行任務,直到您終止它爲止。正如我所說,它需要每分鐘撥打一次。

+0

我已經運行了下面的命令但是不知道批處理文件的實際位置? 'C:\> CD的xampp/htdocs中/ blog' 'C:\ XAMPP \ htdocs中\博客> CD C:/xampp/php/php.exe人員電子郵件:發送1 >> NUL 2>&1' – Hola

4

您需要創建一個計劃任務,每分鐘執行一次該批處理文件。

要做到這一點:

  • + [R和運行taskschd.msc

  • 在右側面板中點擊創建基本任務並給它一個名稱+描述。

  • 單擊下一步並選擇啓動程序選項,然後導航到批處理文件並將其選中。無需填寫其他字段。

  • 選擇「打開此任務的屬性...」,然後單擊完成。

  • 觸發選項卡,您可以更改登錄日報之間或(像我一樣)。

    這裏是不是記錄的一部分,打開下拉框,並使用鍵盤插入,這是設置重複時間1分鐘(即使下拉不會列出它)的唯一途徑。

    Larevel需要cronjob每分鐘運行一次,否則將無法正常工作。

    還檢查「無限期」運行它的生命期。

希望它有幫助。

Windows任務計劃程序幫助here,如果你遇到麻煩。

+0

批處理文件實際存儲在哪裏? 運行這些命令後? – Hola

+0

將CD命令移動到基礎laravel安裝並不重要。例如:CD \ your \ laravel \ base \ folder –

+0

實際上我想說的是,當我必須上傳批處理文件在任務計劃程序創建時,我沒有得到我應該上傳哪個文件? – Hola

0

Windows確實支持Laravel Scheduler但是,您必須自己多次運行該命令。因爲我們不能像使用linux crontab那樣使用Windows任務計劃程序每運行1分鐘。運行

命令:如果您使用的是開發環境的窗口和要測試指令是否工作不如果運行

PHP工匠時間表,你可以試試這個

多次通過給每個試驗的最小差距,它會工作。

enter image description here

如果您想直接運行該命令你可以按照這個。

「路徑\爲\ php.exe的」, 「工匠」 YourCommand> 「NUL」 2>

您可以使用下面的步驟你的php.exe的路徑。

運行「其中的php.exe」,在命令提示符下

+0

正如您在我的答案中所見,實際上有一種方法可以讓Windows調度程序每分鐘運行一次命令。 Laravel將不能與其他計時器一起工作。 –

0

我有一個單一的解決方案 創建到文件的可執行xxx.cmd,打開文件,並寫入下一個文本。

@echo off 

echo - = = = Schedule Run Jobs == = = = - 


CD d: && CD \xampp\htdocs\folderlaravel && php artisan schedule:run 

timeout 86400 

CD d: && CD \xampp\htdocs\folderlaravel && "Schedule.cmd" 

pause 

@cls 

你所做的是運行並在無限循環中運行,具體取決於你給定的超時時間。在這種情況下,86400 => 1天。

它有點模糊,但它的作品:)

我希望它適合你。