mail()
У меня есть страничка, которая отсылает определенным чувакам из базы письма.
Так вот, количество чувачков колеблится от 1 до 50 000. Что делать в случае 4000 - 50 000.
У меня есть такие варианты это реализовать:
- отсылать циклом каждого чувачка (этот вариант мне не по душе:слетит нафиг сервак, и юзер долго будет ждать)
- отсылать пачками, например по 500 человек (вроде нормальный вариант)
- кинуть отсылку на крон (облом реализовывать)
- кинуть отсылку на подпольный скрипт (типа system'ом запустить скрипт, который будет пакованами с задержкой несколько секунд отсылать письма)
Цитата:
Originally posted by Новая папка
- отсылать пачками, например по 500 человек (вроде нормальный вариант)
- отсылать пачками, например по 500 человек (вроде нормальный вариант)
Я делал так, чтоб сервер не грузить..
а пачками здесь имеется ввиду в строке To: задавать много адресатов? или ещё что?
Цитата:
Originally posted by Новая папка
Нужна срочно помощь!!!!!
У меня есть страничка, которая отсылает определенным чувакам из базы письма.
Так вот, количество чувачков колеблится от 1 до 50 000. Что делать в случае 4000 - 50 000.
У меня есть такие варианты это реализовать:
- отсылать циклом каждого чувачка (этот вариант мне не по душе:слетит нафиг сервак, и юзер долго будет ждать)
- отсылать пачками, например по 500 человек (вроде нормальный вариант)
- кинуть отсылку на крон (облом реализовывать)
- кинуть отсылку на подпольный скрипт (типа system'ом запустить скрипт, который будет пакованами с задержкой несколько секунд отсылать письма)
Нужна срочно помощь!!!!!
У меня есть страничка, которая отсылает определенным чувакам из базы письма.
Так вот, количество чувачков колеблится от 1 до 50 000. Что делать в случае 4000 - 50 000.
У меня есть такие варианты это реализовать:
- отсылать циклом каждого чувачка (этот вариант мне не по душе:слетит нафиг сервак, и юзер долго будет ждать)
- отсылать пачками, например по 500 человек (вроде нормальный вариант)
- кинуть отсылку на крон (облом реализовывать)
- кинуть отсылку на подпольный скрипт (типа system'ом запустить скрипт, который будет пакованами с задержкой несколько секунд отсылать письма)
А где храняться мыльники?
Если в бд, то добавь столбец(к примеру,sent), а когда вытаскивать будешь и мылить(хотя бы те же 500 раз),ставь в этот столбец единичку,мол послали. Потом следующие пятьсот.Если есть ограничения по процессорной занятости,время от времени делай sleep()
Цитата:
Originally posted by RedHotPHPepper
А где храняться мыльники?
Если в бд, то добавь столбец(к примеру,sent), а когда вытаскивать будешь и мылить(хотя бы те же 500 раз),ставь в этот столбец единичку,мол послали. Потом следующие пятьсот.Если есть ограничения по процессорной занятости,время от времени делай sleep()
А где храняться мыльники?
Если в бд, то добавь столбец(к примеру,sent), а когда вытаскивать будешь и мылить(хотя бы те же 500 раз),ставь в этот столбец единичку,мол послали. Потом следующие пятьсот.Если есть ограничения по процессорной занятости,время от времени делай sleep()
Да ну..это лишнее, просто воспользуйся статьей Постраничный вывод на PHP Вместо вывода, делай mail() далее отобразится навигация и жми след. страницу.
Цитата:
Originally posted by Web-master
Да ну..это лишнее, просто воспользуйся статьей Постраничный вывод на PHP Вместо вывода, делай mail() далее отобразится навигация и жми след. страницу.
Да ну..это лишнее, просто воспользуйся статьей Постраничный вывод на PHP Вместо вывода, делай mail() далее отобразится навигация и жми след. страницу.
Ну или так. Есть много способов. Было бы мало, не спрашивали б...
Код:
$all=mysql_query("SELECT count(*) FROM table");
$rec=mysql_result($all,0,0);
mysql_free_result($all);
function LeftRight($records,$r_start,$URL,$inpage) {
$str="";
if ($records<=$inpage) return;
if ($r_start!=0) {
$str.="<< ";
$str.="<a href=$URL".($r_start-1)."><</a> ";
}
else $str.="<< < ";
if ($r_start==0) {$sstart=$r_start-0;$send=$r_start+10;}
if ($r_start==1) {$sstart=$r_start-1;$send=$r_start+9;}
if ($r_start==2) {$sstart=$r_start-2;$send=$r_start+8;}
if ($r_start==3) {$sstart=$r_start-3;$send=$r_start+7;}
if ($r_start==4) {$sstart=$r_start-4;$send=$r_start+6;}
if ($r_start>=5) {$sstart=$r_start-5;$send=$r_start+5;}
if ($send*$inpage>$records) $send=$records/$inpage;
if ($sstart<0) $sstart=0;
if ($records%$inpage==0) $add=0; else $add=1;
for ($i=$sstart;$i<$send;$i++) {
if ($i==$r_start) $str.=" ".($i+1)." - ".(intval($records/$inpage)+$add)." | ";
else $str.="<a href=$URL".($i)."><U>".($i+1)."</U></a> | ";
}
if ($r_start+(1-$add)<intval($records/$inpage)) {
$str.=" <a href=$URL".($r_start+1).">></a>";
$str.=" <a href=$URL".(intval($records/$inpage)-(1-$add)).">>></a>";
}
else $str.=" > >>";
return($str);
}
$dmail=mysql_query("SELECT * FROM table LIMIT ".($from*500)." , 500");
while ($smail=mysql_fetch_array($dmail))
{
$mail=$smail['mail];
$headers=null;
$headers.="From: Admin <admin@domain.ru>\n";
$headers.="X-Sender: <admin@domain.ru>\n";
$headers.="X-Mailer: PHP\n";
$headers.="Reshow-Path: <admin@domain.ru>\n";
$headers.="Content-Type: text/html; charset=Windows-1251\n";
$headers.="Content-Transfer-Encoding: 8bit".chr(13).chr(10);
if (mail(strtolower($mail),"Тема","Сообщение",$headers))
{
print $mail." отправлено
";
flush()
}
sleep(1);
}
// Пример вызова
print "
<center>Страницы : ".LeftRight($rec,$from,"sentmail.php?from=",500)."</center>";
$rec=mysql_result($all,0,0);
mysql_free_result($all);
function LeftRight($records,$r_start,$URL,$inpage) {
$str="";
if ($records<=$inpage) return;
if ($r_start!=0) {
$str.="<< ";
$str.="<a href=$URL".($r_start-1)."><</a> ";
}
else $str.="<< < ";
if ($r_start==0) {$sstart=$r_start-0;$send=$r_start+10;}
if ($r_start==1) {$sstart=$r_start-1;$send=$r_start+9;}
if ($r_start==2) {$sstart=$r_start-2;$send=$r_start+8;}
if ($r_start==3) {$sstart=$r_start-3;$send=$r_start+7;}
if ($r_start==4) {$sstart=$r_start-4;$send=$r_start+6;}
if ($r_start>=5) {$sstart=$r_start-5;$send=$r_start+5;}
if ($send*$inpage>$records) $send=$records/$inpage;
if ($sstart<0) $sstart=0;
if ($records%$inpage==0) $add=0; else $add=1;
for ($i=$sstart;$i<$send;$i++) {
if ($i==$r_start) $str.=" ".($i+1)." - ".(intval($records/$inpage)+$add)." | ";
else $str.="<a href=$URL".($i)."><U>".($i+1)."</U></a> | ";
}
if ($r_start+(1-$add)<intval($records/$inpage)) {
$str.=" <a href=$URL".($r_start+1).">></a>";
$str.=" <a href=$URL".(intval($records/$inpage)-(1-$add)).">>></a>";
}
else $str.=" > >>";
return($str);
}
$dmail=mysql_query("SELECT * FROM table LIMIT ".($from*500)." , 500");
while ($smail=mysql_fetch_array($dmail))
{
$mail=$smail['mail];
$headers=null;
$headers.="From: Admin <admin@domain.ru>\n";
$headers.="X-Sender: <admin@domain.ru>\n";
$headers.="X-Mailer: PHP\n";
$headers.="Reshow-Path: <admin@domain.ru>\n";
$headers.="Content-Type: text/html; charset=Windows-1251\n";
$headers.="Content-Transfer-Encoding: 8bit".chr(13).chr(10);
if (mail(strtolower($mail),"Тема","Сообщение",$headers))
{
print $mail." отправлено
";
flush()
}
sleep(1);
}
// Пример вызова
print "
<center>Страницы : ".LeftRight($rec,$from,"sentmail.php?from=",500)."</center>";
Your message did not reach some or all of the intended recipients.
Subject:
Sent: 7/25/2005 5:31 PM
The following recipient(s) could not be reached:
'blah@yahoo.com' on 7/25/2005 5:31 PM
450 4.0.0 <blah@yahoo.com>... Your IP address has been restricted due to heavy usage. Enable SMTP authentication in your email client to send mail.
На сколько я понял, yahoo заблочил письма с того сайта в целях защиты от спама. На другие ящики письма отсылаюся прекрастно.
Что делать в таком случае? Связываться с yahoo или делать authorication в пхп???