问题一
以前在别的项目中遇到过一个问题:PHP使用 foreach 循环发送邮件时,会产生如下错误:
示例代码:
$emails = [
'123@qq.com',
'456@qq.com',
'789@qq.com',
];
// $Email 为邮件发送类
foreach ($emails as $email) {
$Email->send($email, 'subject', 'test');
}
看代码执行结果应该是 : 3个邮箱各收到一封邮件,然而事实是: 第一个
邮箱收到 1
邮件; 第二个
邮箱收到 2
邮件; 第三个
邮箱收到 3
邮件;
当时很不理解为什么?后来该项目的邮件换成了亚马逊的邮件服务
,也就没去细想。
问题二
最近在项目中遇到一个类似的问题:定时脚本批量获取远程URL内容,代码大致如下:
$sites = [
'www.site1.com',
'www.site2.com',
'www.site2.com',
];
// $CURL 大家脑补
foreach ($sites as $site) {
$result = $CURL->get($site);
var_dump($result);
}
本以为应该是打印出3个站点的返回值,可是时间情况并非如此,在审查数据库日志时,发现很多数据不太对。
比较疑惑的是:在循环中使用 CURL
时,要考虑并发啊什么这些东西吗?菜鸟求解。
贴出完整的代码看看