PHP, кажется, идет в бесконечном цикле foreach

Я использую следующий код:

$array = explode("\n", file_get_contents($file));
// Here $file contains n e-mail addressesforeach ($array as $value) {
$check = file_get_contents('file.txt');
$subject = 'Subject (' . $entry . ')';
$to  = $value;

if ($check < $credits){
$message = '...';
}
else{
$message = '...';
}
$headers  = 'MIME-Version: 1.0' . "с\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: '...' . "\r\n";
mail($to, $subject, $message, $headers);
}

Файл читается с указанием количества адресов электронной почты. На каждое электронное письмо отправляется сообщение. Ничего не изменилось в файле.

Большую часть времени он работает абсолютно нормально и отправляет только одно сообщение на каждый адрес. Однако иногда кажется, что он заходит в бесконечный цикл и начинает отправлять несколько сообщений на одни и те же адреса.

При необходимости могу предоставить дополнительную информацию.

1

Решение

Я не вижу ничего, что могло бы вызвать здесь бесконечный цикл.
Файл с адресами электронной почты, вероятно, дублирует электронные письма.

Попробуйте что-то вроде этого, чтобы подтвердить:

$array = explode("\n", file_get_contents($file));
print_r(array_count_values($array));

Это должно вывести что-то вроде этого:

Array
(
[[email protected]] => 2
[[email protected]] => 1
[[email protected]] => 3
...
)
0

Другие решения

Ваш код имеет небольшую ошибку во времени для конкатенации строки.

Неправильно

$headers .= 'From: '...' . "\r\n";

Правильно

$headers = 'From: . \ R \ n";

И я не вижу ничего, что может генерировать бесконечный цикл с foreach, попробуйте ‘var_dump ($ array)’, чтобы проверить значения, которые приходят к вам.

0

По вопросам рекламы [email protected]