[英]Why Jobs on laravel crashes my computer when I'm using linux? but works fine when I'm using Windows?
我已經是 1 年的 laravel 開發人員了..在我在 Windows 上使用 laravel 之前,但自從我使用 Linux 之后..我在 laravel 中的 Jobs 上遇到了一個大問題..每次我在 linux 上開始工作時,我的機器都會崩潰.. 但是在 Windows 上一切正常。
//我的控制器
<?php
namespace App\Http\Controllers;
use App\Jobs\CustomerJob;
use Illuminate\Http\Request;
class SendEmailControllers extends Controller
{
public function sendEmail(){
dispatch(new CustomerJob())->delay(now()->addMinutes(1));
dd('Email has been delivered');
}
}
//職位代碼
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeUserMail;
class CustomerJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Mail::to('bramslevel129@gmail.com')->send(new WelcomeUserMail);
}
}
這是我重新啟動機器時顯示的錯誤。 錯誤顯示在我的 Failed_job 表上。
//錯誤
Illuminate\Queue\MaxAttemptsExceededException:
App\Jobs\CustomerJob has been attempted too many times or run too long.
The job may have previously timed out.
in /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Queue/Worker.php:750 Stack trace:#0 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(504): Illuminate\Queue\Worker->maxAttemptsExceededException()
#1 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(418): Illuminate\Queue\Worker->markJobAsFailedIfAlreadyExceedsMaxAttempts()
#2 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(378): Illuminate\Queue\Worker->process()
#3 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(172): Illuminate\Queue\Worker->runJob()
#4 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(126): Illuminate\Queue\Worker->daemon()
#5 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(110): Illuminate\Queue\Console\WorkCommand->runWorker()
#6 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Queue\Console\WorkCommand->handle()
#7 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#8 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
#9 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod()
#10 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Container/Container.php(653): Illuminate\Container\BoundMethod::call()
#11 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Console/Command.php(136): Illuminate\Container\Container->call()
#12 /home/dev/www/laravel-authentication/vendor/symfony/console/Command/Command.php(291): Illuminate\Console\Command->execute()
#13 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\Component\Console\Command\Command->run()
#14 /home/dev/www/laravel-authentication/vendor/symfony/console/Application.php(989): Illuminate\Console\Command->run()
#15 /home/dev/www/laravel-authentication/vendor/symfony/console/Application.php(299): Symfony\Component\Console\Application->doRunCommand()
#16 /home/dev/www/laravel-authentication/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()
#17 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Console/Application.php(102): Symfony\Component\Console\Application->run()
#18 /home/dev/www/laravel-authentication/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\Console\Application->run()
#19 /home/dev/www/laravel-authentication/artisan(37): Illuminate\Foundation\Console\Kernel->handle()
#20 {main}
嘗試為作業設置破壞規則以停止掛起您的系統
//CustomerJob.php
/**
* The number of seconds the job can run before timing out.
*
* @var int
*/
public $timeout = 15; // just for your case
/**
* Indicate if the job should be marked as failed on timeout.
*
* @var bool
*/
public $failOnTimeout = true;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public $tries = 3;
/**
* The maximum number of unhandled exceptions to allow before failing.
*
* @var int
*/
public $maxExceptions = 1;
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Log::debug('jobs', ['job start']);
Mail::to('bramslevel129@gmail.com')->send(new WelcomeUserMail);
Log::debug('jobs', ['job end']);
}
並檢查project_folder/storage/logs/laravel.log
(如果日志配置為單個文件)或對應於日志配置 - 可能存在關於作業本身的錯誤(例如,由於錯誤的郵件配置而無法發送郵件)
第 2 步:嘗試將郵件驅動程序設置為記錄以查看更改並再次檢查日志
# .env file
# you can comment lines using # in this file
# MAIL_MAILER=smtp
MAIL_MAILER=log
MAIL_LOG_CHANNEL=debug
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.