iT邦幫忙

1

[已解決]Laravel的Schedule只會執行一次的問題

大家好,如標題所示,我的Laravel專案的排程只會執行一次
我的作業系統為Windos7、php為7.3.6、Laravel版本為5.5.48
我的作法為依照文件所示:先至laravel/app/consle/Kernel.php新增排程功能如下:

protected function schedule(Schedule $schedule)
    {   
        // $schedule->call(function () {
        //     Log::info('success');
        // })->everyMinute();

        $schedule->call(function(){
            DB::insert('insert into test (data) values (?)', array('Dayle'));})->everyMinute();
        
        // $schedule->command('inspire')
        //          ->hourly();
       
        // $schedule->command('test:LOG')->everyMinute();

    }

接著在cmd打上:php artisan schedule:run

回覆為:Runnung scheduled command: Closure

之後於DB內確認有新增一筆資料,但並沒有像預期中的每分鐘皆新增一筆。

1 個回答

1
浩瀚星空
iT邦超人 1 級 ‧ 2020-04-13 18:51:30
最佳解答

你有在crontab內加入如下排程器的動作嘛??

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

沒有的話,它是不會跑的。
everyMinute只是告訴 schedule 這個命令是每分跑一次。
但並不代表它就會每分跑。
你還是需要crontab來幫你跑。

kurt6783 iT邦新手 5 級 ‧ 2020-04-13 19:39:13 檢舉

您好,請問這行指令是要建立windows本身的工作排程器嗎?
我嘗試於c:/xampp/htdocs/Laravel5.5路徑下執行php /path/to/artisan schedule:run >> /dev/null 2>&1此指令,但回覆為:The system cannot find the path specified.
我認為應該是我的路徑或是指令有下錯,但是實在不明白此指令代表的涵義。

我也有嘗試用 https://shian420.pixnet.net/blog/post/344746000-%5Blaravel%5D-%E7%95%B6windows%E9%81%87%E4%B8%8Alaravel%E4%BB%BB%E5%8B%99%E6%8E%92%E7%A8%8B 這篇的教學直接開啟工作排程器新增自動排程,但依然無效,麻煩您再幫我解惑,謝謝。

kurt6783 iT邦新手 5 級 ‧ 2020-04-13 20:24:43 檢舉

您好,WINDOWS好像只能用介面設定排程器,無法使用指令,但經過介面設定排程器後功能已經正常了,謝謝。

你處理好就好了。
我沒注意看你是windows系統。

windows的設定方式不一樣沒錯。它是要用「計劃排程」

只是我給你的只是範例用的。實際的運行你要自已改。
幸好你還會改。

我要發表回答

立即登入回答