簡體   English   中英

Laravel 調度調用控制器

[英]Laravel Scheduling call controller

我使用 Laravel 任務調度,但是當我從控制器調用某些方法時遇到問題。

protected function schedule(Schedule $schedule)
{
    $schedule->call('UserController@deleteInactiveUsers')->everyMinute();
    //$schedule->call('App\Http\Controllers\UserController@deleteInactiveUsers')->everyMinute();
}

當我使用未注釋的行調用時,出現此錯誤:

[ReflectionException]
Class RecurrenceInvoiceController does not exist

然后我插入完全限定的命名空間路徑,然后出現此錯誤:

[PDOException] SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

[ErrorException] PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known 

問題出在哪兒? 從 Laravel 任務調度中從控制器調用方法的方法是正確的。

我幾個月前偶然發現同樣的問題,直到我能解決它。 我使用laravel 5.2,內核以這種方式調用我的驅動程序:

$schedule->call('App\Http\Controllers\MyController@MyAction')->everyMinute();

我希望這能幫助別人;)

直接把這個放在kernel.php文件的schedule函數里

$schedule->call('App\\Http\\Controllers\\YourController@function')->everyMinute();

這將在每分鍾后運行

筆記:

在本地主機中,您必須手動運行它,但在服務器上,您應該在您的 cronjob 中嘗試此命令,這將在每分鍾后自動調用您的控制器功能

php -d register_argc_argv=On /home/iflasity/public_html/foldername /artisan schedule:run > /dev/null 2>&1

cd /home/iflasity/public_html/foldername && php artisan schedule:run /dev/null 2>&1

對我來說,第一個錯誤看起來像你需要運行composer update ,然后是composer dump-autoload

如果它工作,你也會得到第二個錯誤,2002年的錯誤意思是:

無法通過套接字連接到本地MySQL服務器“(請參閱(MySQL文檔中的客戶端錯誤代碼和消息)。

您需要在.env文件中設置數據庫配置

現在我用更簡單的功能測試在數據庫中插入新貨幣。 這是代碼:

public function handle()
    {
        $currency                = new Currency();
        $currency->currency_name = 'EUR';
        $currency->save();

        $this->info('New currency is successfully generated!');
    }

此功能來自laravel/app/Console/Commands 我從Kernel > schedule()調用。 不行。

當我插入簡單的日志寫入handle()函數時:

File::put(base_path() . '/storage/logs/test_logs.txt', 'Test log ' . Carbon::now()->format('Y-m-d H:i:s') . PHP_EOL);

這很有效。 但是當我嘗試從Models創建新對象並保存到db - >這不起作用。

好。 我解決了這個問題。 問題出在Docker Cron容器上。 Cron容器沒有與MySQL容器鏈接。 謝謝你的所有答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM