Php Laravel可使用正确型号发送邮件,然后使用错误型号发送第二封不需要的电子邮件
我遇到的情况是,我正在建立一个FTP连接,收集数据,在其中循环,使用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
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);
}