[英]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.