Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 该作业尝试次数太多或运行时间太长_Php_Laravel_Queue_Laravel 5.7_Laravel Queue - Fatal编程技术网

Php 该作业尝试次数太多或运行时间太长

Php 该作业尝试次数太多或运行时间太长,php,laravel,queue,laravel-5.7,laravel-queue,Php,Laravel,Queue,Laravel 5.7,Laravel Queue,我对Laravel 5.7中的作业调度有问题。 我需要在作业中提取客户的数据,但每次在prod服务器上运行时,我都会 [2020-01-02 13:02:02] production.INFO: Job started [2020-01-02 13:02:02] production.INFO: =================== [2020-01-02 13:02:02] production.INFO: Contest: name [2020-01-02 13:02:02] pr

我对Laravel 5.7中的作业调度有问题。 我需要在作业中提取客户的数据,但每次在prod服务器上运行时,我都会

[2020-01-02 13:02:02] production.INFO: Job started  
[2020-01-02 13:02:02] production.INFO: ===================  
[2020-01-02 13:02:02] production.INFO: Contest: name
[2020-01-02 13:02:02] production.INFO: ===================  
[2020-01-02 13:12:08] production.INFO: Job started  
[2020-01-02 13:12:08] production.INFO: ===================  
[2020-01-02 13:12:08] production.INFO: Contest: name
[2020-01-02 13:12:08] production.INFO: ===================  
[2020-01-02 13:22:15] production.INFO: Job started  
[2020-01-02 13:22:15] production.INFO: ===================  
[2020-01-02 13:22:15] production.INFO: Contest: name
[2020-01-02 13:22:15] production.INFO: ===================  
[2020-01-02 13:32:21] production.INFO: Job started  
[2020-01-02 13:32:21] production.INFO: ===================  
[2020-01-02 13:32:21] production.INFO: Contest: name
[2020-01-02 13:32:21] production.INFO: ===================  
[2020-01-02 13:42:28] production.INFO: Job started  
[2020-01-02 13:42:28] production.INFO: ===================  
[2020-01-02 13:42:28] production.INFO: Contest: name 
[2020-01-02 13:42:28] production.INFO: ===================  
[2020-01-02 13:44:33] production.ERROR: App\Jobs\SendContestMailToFans has been attempted too many times or run too long. The job may have previously timed out. {"exception":"[object] (Illuminate\\Queue\\MaxAttemptsExceededException(code: 0): App\\Jobs\\SendContestMailToFans has been attempted too many times or run too long. The job may have previously timed out. at /home/forge/loycals.com/vendor/laravel/framework/src/Illuminate/Queue/Worker.php:401)
[stacktrace]
这是一个工作机构。正如我从日志中看到的,作业在拉取收件人时停止

private function sendContestEmails()
{
    Log::info('Job started');

    $contest = $this->contest->load([
        'prizes',
        'primary_sponsor',
        'secondary_sponsors',
    ]);

    Log::info('===================');
    Log::info('Contest: ' . $contest->title);
    Log::info('===================');

    $recipients = $contest->primary_sponsor->first()->subscribers()->whereDate('email_sent_at', '<=', Carbon::now()->subWeek()->format('Y-m-d H:i:s'))->orWhereNull('email_sent_at')->get(); // list of subscribers (which is a unique list of fans for that sponsor)

    $count = 1;
    foreach($recipients as $recipient) {
        $count++;
    }
    Log::info('===================');
    Log::info('Recipients: ' . $count);
    Log::info('===================');


    $sponsor = $contest->primary_sponsor->first();
    $subject = 'New Contest at ' . $sponsor->title; // venue title

    Log::info('===================');
    Log::info('Sponsor: ' . $sponsor->title);
    Log::info('===================');

    Log::info('Job finished');
}
private函数sendCompetingEmails()
{
日志::信息(“作业已启动”);
$contest=$this->contest->load([
“奖品”,
“主要赞助商”,
“二级赞助商”,
]);
日志::信息('=========================');
日志::信息('Contest:'.$Contest->title);
日志::信息('=========================');

$recipients=$contest->primary\u赞助商->first()->subscribers()->whereDate('email_sent_at','你永远不会收到收件人的回音,因此很可能是查询出了问题。你必须专门尝试一下,以找出为什么需要这么长时间。另请注意,由于$recipients将是一个Laravel集合,因此可以使用
$count=$recipients->count();
获取总数而不是使用foreach循环。@aynber是的,由于某种原因,当我交换NotNull和WhereDate以使NotNull成为第一个条件时,它起了作用!这很奇怪,因为在我的本地计算机和临时服务器上,旧队列工作正常。谢谢!您可以尝试添加->toSql()在查询结束时,转储结果以检查两个场景中的情况(whereDate为first vs.whereDate为last)。首先,此部分
$recipients=$contest->primary\u赞助商->first()->subscribers()->whereDate('email\u sent\u at','first,此部分[code]$recipients=$contest->primary\u赞助商->first()->subscribers()->whereDate('email\u sent at','first,此()->where date('email_sent_at','count();检查是否为空($recipient->email);您想发送电子邮件,是吗?