[英]Laravel 5.3 Queues not working in shared hosting
在我的Laravel 5.3。*應用程序中,我在后台運行隊列。 在我的本地計算機上,這完全可以正常工作。 但是,當在服務器(共享主機)上啟用此功能時,它根本不起作用。
這是場景:
管理員正在提交管理員生成器表單數據。
數據正在插入數據庫中。
拍攝一封與此相同的電子郵件。
因此,為了使此功能順利進行,我在服務器的cPanel上創建了一個cron作業。
這是cron工作:
/usr/local/bin/php /home/<username>/laravel-app/artisan schedule:run >/dev/null 2>&1
這是app/Console/Kernel.php
文件的內容
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
$schedule->command('queue:work --daemon --tries=3')
->everyMinute()
->withoutOverlapping();
}
我還通過運行創建了作業數據庫
php artisan queue:table;
php artisan queue:failed-table;
php artisan migrate;
生成/插入管理員后,將觸發一個事件:
event(new AdministratorHasBeenGenerated($user, $request->password));
它將向您提供的電子郵件ID發送歡迎電子郵件(在app/Listeners/AdministratorHasBeenGenerated/SendWelcomeEmail.php
)
/**
* Handle the event.
*
* @param AdministratorHasBeenGenerated $event
* @return void
*/
public function handle(AdministratorHasBeenGenerated $event)
{
Mail::to($event->administrator->email)
->queue(new GeneratedMail($event->administrator, $event->password));
}
這是.env文件中的郵件配置
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=correct_username
MAIL_PASSWORD=correct_password
MAIL_ENCRYPTION=null
我沒有收到任何錯誤或類似信息,但是即使我提供了正確的電子郵件ID,也沒有收到任何歡迎電子郵件。
更新1:2017年12月21日
這只是一種解決方法,因為我找不到該問題的實際解決方案。 我所做的是我創建了另一個僅用於運行隊列的cron作業。
/usr/local/bin/php /home/<username>/laravel-app/artisan queue:work --daemon --tries=3 >/dev/null 2>&1
這將觸發命令queue:work
每分鍾(或您在cPanel的cron作業標簽中設置的任何內容)。
我想以上解決方案是不正確的。更歡迎進行更正/修正。
有人能指出我必須在哪里做的錯誤嗎? 已經超過4個小時了,我找不到任何解決方案。
非常感謝您的幫助。 謝謝。
您應該將cron編輯成這樣
* * * * * /usr/local/bin/php /home/<username>/laravel-app/artisan schedule:run >/dev/null 2>&1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.