Помогите пожалуйста, чтото голова совсем не варит уже)
Задача состоит в том чтобы отправлять пользователям письма через функцию mail (выбирая их из бд) в определнное время через CRON... И если вдруг ошибка то продолжить рассылать с последнего удачного...
Я так понимаю что нужно вытащить все емаил из базы, и через цикл запустить это
Пока насобирал вот такой код, конечно же не рабочий)
$result = mysql_query("SELECT * FROM users",$db);
while ($row = mysql_fetch_array($result)){
for ($i=0; $i < count ($row['id']); $i++){
if (!empty($row['email'][$i])){
if(echo $row['email'];){
echo "Адрес - ".$row[email]." - статус ОК";
} else {
echo "Адрес - ".$row[email]." - статус BAD";
}
}
Спасибо большое за помощь!
Спустя 32 минуты, 59 секунд (31.10.2011 - 22:07) imbalance_hero написал(а):
maxmsmax
и? Я не вижу у тебя, чтобы ты отправлял.
и? Я не вижу у тебя, чтобы ты отправлял.
Спустя 2 часа, 29 минут, 56 секунд (1.11.2011 - 00:37) maxmsmax написал(а):
$result = mysql_query("SELECT * FROM users",$db);
while ($row = mysql_fetch_array($result)){
for ($i=0; $i < count ($row['id']); $i++){
if (!empty($row['email'][$i])){
if(mail($row['email'], $subject, $message, $headers)){
echo "Адрес - ".$row[email]." - статус ОК";
} else {
echo "Адрес - ".$row[email]." - статус BAD";
}
}
ну вроде так ... но ?!?!
! |
Winston |
Спустя 2 минуты, 16 секунд (1.11.2011 - 00:39) imbalance_hero написал(а):
maxmsmax
for убери, и будет тебе рассылка в цикле. В чём проблема?
for убери, и будет тебе рассылка в цикле. В чём проблема?
Спустя 1 час, 29 минут, 30 секунд (1.11.2011 - 02:09) Guest написал(а):
$result = mysql_query("SELECT email FROM users", $db);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
if (!empty($row['email'])) {
if (mail($row['email'], $subject, $message, $headers)) {
echo "Адрес - " . $row['email'] . " - статус ОК";
} else {
echo "Адрес - " . $row['email'] . " - статус BAD";
}
}
}
Спустя 22 минуты, 8 секунд (1.11.2011 - 02:31) Guest написал(а):
Еще вариант:
$result = mysql_query("SELECT email FROM users", $db);
$allEmailsArray = array();
$allEmailsString = '';
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
if (filter_var($row['email'], FILTER_VALIDATE_EMAIL)) {
$allEmailsArray[] = $row['email'];
} else {
echo "$row[email] - не прошел валидацию";
}
}
if (count($allEmailsArray)) {
$allEmailsString = implode(', ', $allEmailsArray);
mail($allEmailsString, $subject, $message);
}
Спустя 9 часов, 26 минут, 57 секунд (1.11.2011 - 11:58) maxmsmax написал(а):
ооо! Спасибо огромное ....
А скажите, если допустим во время выполнения я прерву цикл, а потом запущу снова, он же будет рассылать с самого начала ? Как сделать что бы рассылка продолжалась с того момента, где остановилась ?
И как все это повесить на CRON что бы выполнялось в определенное время ?
Очень благодарен
А скажите, если допустим во время выполнения я прерву цикл, а потом запущу снова, он же будет рассылать с самого начала ? Как сделать что бы рассылка продолжалась с того момента, где остановилась ?
И как все это повесить на CRON что бы выполнялось в определенное время ?
Очень благодарен

Спустя 26 минут, 17 секунд (1.11.2011 - 12:24) phz написал(а):
Почитайте статью на эту тему Эмуляция многопоточности в PHP
Спустя 3 часа, 38 минут, 50 секунд (1.11.2011 - 16:03) maxmsmax написал(а):
ну вроде устраивает вариант который предожили выше. Осталось только разобраться как :
1. Сделать, проверку, что бы в случае сбоя отправлять продолжая с ошибки, а не сначала и всем пользователям. Т.е. если не отработал до конца, то при следующем запуске он продолжает работу там где остановился и
2. Как его поставить в CRON чтобы это все происходило в определенное время ?
1. Сделать, проверку, что бы в случае сбоя отправлять продолжая с ошибки, а не сначала и всем пользователям. Т.е. если не отработал до конца, то при следующем запуске он продолжает работу там где остановился и
2. Как его поставить в CRON чтобы это все происходило в определенное время ?
Спустя 1 час, 3 минуты, 18 секунд (1.11.2011 - 17:06) maxmsmax написал(а):
да если можно, скиньте примерчик) Буду благодарен.
Спустя 3 часа, 31 минута, 25 секунд (1.11.2011 - 20:38) imbalance_hero написал(а):
maxmsmax
Насчет крона - напиши хостингу, они тебе ответят, где и как настраивается. Если даже после этого их пример работать не будет, тогда ещё раз напиши, и если опять не будет - напиши нам
У меня была похожая ситуация, они пишут, я его копи-пастю, а их пример не работает вообще. Благо подсказали как сделать по-другому.
Насчет того, как фиксировать, а ты в случае удачи обновляй запись в БД, что рассылка этому пользователю уже была совершена, ставь там что-то типо sended = 1, а тем, кому не отправил: sended = 0. А ещё улучшить, так собирать записи в общий массив, кому уже было отправлено mail = true, а потом в случае false ( или окончания скрипта) записи обновлять просто.
Насчет крона - напиши хостингу, они тебе ответят, где и как настраивается. Если даже после этого их пример работать не будет, тогда ещё раз напиши, и если опять не будет - напиши нам

Насчет того, как фиксировать, а ты в случае удачи обновляй запись в БД, что рассылка этому пользователю уже была совершена, ставь там что-то типо sended = 1, а тем, кому не отправил: sended = 0. А ещё улучшить, так собирать записи в общий массив, кому уже было отправлено mail = true, а потом в случае false ( или окончания скрипта) записи обновлять просто.
Спустя 5 часов, 55 минут, 18 секунд (2.11.2011 - 02:33) maxmsmax написал(а):
Да, спасибо ОГРОМНОЕ !!!
Вы помогли решить мою задачу ...
очень рад)
Вы помогли решить мою задачу ...
очень рад)