Php Laravel可使用正确型号发送邮件,然后使用错误型号发送第二封不需要的电子邮件

Php Laravel可使用正确型号发送邮件,然后使用错误型号发送第二封不需要的电子邮件,php,laravel,laravel-mail,laravel-horizon,laravel-scheduler,Php,Laravel,Laravel Mail,Laravel Horizon,Laravel Scheduler,我遇到的情况是,我正在建立一个FTP连接,收集数据,在其中循环,使用first或create注册新的或查找以前的查询。每10分钟在调度程序上运行一次,我使用Laravel Horizon来管理队列 问题是,当我运行调度程序时,我发送了一个带有正确数据的查询和一个带有错误数据的查询(只有一封电子邮件) 我发现了一个小的解决方法,使用了急切加载,如果数据不正确但离理想很远,就会失败 如下图所示,创建了两个具有不同ID的作业。220是正确的,29是错误的 当我记录正在循环的内容时,它只显示一个项目(2

我遇到的情况是,我正在建立一个FTP连接,收集数据,在其中循环,使用
first或create
注册新的或查找以前的查询。每10分钟在调度程序上运行一次,我使用Laravel Horizon来管理队列

问题是,当我运行调度程序时,我发送了一个带有正确数据的查询和一个带有错误数据的查询(只有一封电子邮件)

我发现了一个小的解决方法,使用了急切加载,如果数据不正确但离理想很远,就会失败

如下图所示,创建了两个具有不同ID的作业。220是正确的,29是错误的

当我记录正在循环的内容时,它只显示一个项目(220)

我也无法使用命令重新创建错误,因此它似乎(尽管未确认)只在调度程序中发生。

有人知道为什么会这样吗


我发现我有一个使用相同调度运行的登台环境。这意味着相同的数据是在同一时间拉的,只是关系不同,并导致第二封电子邮件。非常愚蠢的错误

你在用主管吗?如果是这样的话,你试过重新启动它吗?我是@IlGala,试过从Forge重新启动。还有一件事我不明白。。。我们正在检查是否应该发送
newportalequirytenant
电子邮件?我已经更新了整个静态函数,您可以看到它是foreach循环的一部分,因此返回的每个结果都应该发送。我已经使用日志检查了数组计数是否只有一个。如果
newportalequirytenant
未接收电子邮件,您将看不到第二个日志,因为在执行过程中引发了
异常
。。。但是,我很抱歉。。。我还是不明白。。。如果电子邮件应该在
If
语句通过后发送,为什么要使其失败?
public static function zooplaLeads()
{
    $all_files = Storage::disk('sftp')->files('outgoing');

    foreach ($all_files as $key => $file_path) {
        $file = Storage::disk('sftp')->get($file_path);
        $parsed_file = simplexml_load_string($file);
        $lead = $parsed_file->ZooplaLead;

        if ($lead->TypeOfEnquiry == 'organise_viewing' || $lead->TypeOfEnquiry == 'request_property_details' || $lead->TypeOfEnquiry == 'looking_to_rent') {
            $user = User::where('email', (string)$lead->FromEmail)->first();

            $user_id = null;

            if ($user) {
                $user_id = $user->id;
            };

            $portal_enquiry = PortalEnquiry::firstOrCreate(
                ['listing_id' => (string)$lead->SourceListingId, 'email' => (string)$lead->FromEmail],
                [
                  'listing_id' => (string)$lead->SourceListingId,
                  'email' => (string)$lead->from_address,
                  'name' => (string)$lead->FirstName . ' ' . (string)$lead->LastName,
                  'contact_number' => (string)$lead->Phone,
                  'portal' => 'Zoopla',
                  'user_id' => $user_id
                ]
            );

            Mail::to($portal_enquiry->email)->send(new NewPortalEnquiryTenant($portal_enquiry->load('listing.property')));

            Storage::disk('sftp')->delete($file_path);
            \Log::emergency('New Zoopla lead: ' . $portal_enquiry->id);
        };
    }
    return count($all_files);
}