Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Отправка почты из базы данных
 
 автор: Елена Смирнова   (26.03.2008 в 18:31)   письмо автору
 
 

Помогите составить цикл отправки почты из БД
делаю так:

$row = @mysql_query("select * from sub_mail where (`mail`='1');");
while ($maillist=mysql_fetch_array($row))
{
for($i=0; $i < $allmail; $i++)
{
mail($maillist[$i], $subject,
$body ."From: $fromemail");
}
}

не получается =(
Первый раз пытаюсь сделать цикл, помогите!
Заранее спасибо!

   
 
 автор: Киналь   (26.03.2008 в 18:47)   письмо автору
 
   для: Елена Смирнова   (26.03.2008 в 18:31)
 

Так должно рабтать:

$row = @mysql_query("select * from sub_mail where `mail`='1'")
 or die(mysql_error()); // на всякий случай=)
while ($maillist=mysql_fetch_array($row))
{
mail($maillist['mail'], $subject, $body ."From: $fromemail");
}


На будущее - во-первых, не ставьте @, если не уверены в явной необходимости этого знака, и во-вторых, пишите, чтоименно не получается, какие именно ошибки выдаются и т.д. Как написали в одном FAQ'е, "Описывайте проблему сами - наши телепаты в отпуске."=)

   
 
 автор: coder-decoder   (26.03.2008 в 18:51)   письмо автору
 
   для: Елена Смирнова   (26.03.2008 в 18:31)
 


<?php
row 
= @mysql_query(\"select * from sub_mail where (`mail`=\'1\');\"); 
while (
$maillist=mysql_fetch_array($row)) 


mail(
$maillist[\'поле_получателм\'],\"Hello From \".PHP_OS.\"!\",\"Testing successfully!\",\"From: root@localhost\");

}
?>
;)

// Слеши (\\\\) удалите все, форум тупит что-то.

   
 
 автор: Елена Смирнова   (26.03.2008 в 19:06)   письмо автору
 
   для: coder-decoder   (26.03.2008 в 18:51)
 

Спасибо, работает. А как мне вывисти кол-во посланного?

   
 
 автор: coder-decoder   (26.03.2008 в 19:26)   письмо автору
 
   для: Елена Смирнова   (26.03.2008 в 19:06)
 

<?php
$row = @mysql_query("select * from sub_mail where (`mail`='1');");
while ($maillist=mysql_fetch_array($row))
{
$i++;
mail($maillist['поле_получателм'],"Hello From ".PHP_OS."!","Testing successfully!","From: root@localhost");

}
echo "Кол-во отправленных сообщений - ".$i;
?>

   
 
 автор: Елена Смирнова   (26.03.2008 в 19:32)   письмо автору
 
   для: coder-decoder   (26.03.2008 в 19:26)
 

coder-decoder, скажите, а что такое $i++; ??? откуда оно берется?

   
 
 автор: Елена Смирнова   (26.03.2008 в 19:27)   письмо автору
 
   для: Елена Смирнова   (26.03.2008 в 19:06)
 

И еще как быть если в БД очень много емаил... У меня сейчас 900 но даже с таким объемом чувствуется напряженность выполнения, а что тогда будет когда емайлов наберется более 10000 ??? Посоветуйте

   
 
 автор: coder-decoder   (26.03.2008 в 21:19)   письмо автору
 
   для: Елена Смирнова   (26.03.2008 в 19:27)
 

$i++ -- это увеличение некой переменной $i на 1 при каждой интерации (повторении) команд тела цикла.
По поводу производительности рассылки -- запускайте скрипт из шелла
/usr/local/bin/php-cgi -f /path/to/script.php &
и выделите ему побольше озу, и бесконечный лимит времени

<?php
// В самом верху скрипта
ini_set("memory_limit","256M"); // Выделяем скрипту 256 Мб ОЗУ.
ini_set("max_execution_time","0"); // Отключаем лимит времени для исполнения скрипта.
?>

Естественно желательно иметь Выделенный сервер в личном распоряжении, либо можный VDS/VPS, ну или накрайняк SSH на виртуальном хостинге, но за такие игрушки могут и попросить с оного:)

   
 
 автор: Елена Смирнова   (26.03.2008 в 22:43)   письмо автору
 
   для: coder-decoder   (26.03.2008 в 21:19)
 

А может можно как то разбить этот цикл и посылать вручную по 500 например с интервалом времени в 1 час

   
 
 автор: Елена Смирнова   (27.03.2008 в 16:32)   письмо автору
 
   для: Елена Смирнова   (26.03.2008 в 22:43)
 

По принципу постраничной навигации может ???

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования