mail() в цикле - помогите остановить!!!

Статус
В этой теме нельзя размещать новые ответы.

Angl

Новичок
mail() в цикле - помогите остановить!!!

Спасите блондинку!! Я сглупила: поставила функцию mail() в тело цикла while, и теперь эта зараза бомбит меня сообщениями! Я не знаю, как это остановить - подскажите! Я уже стёрла записи в базе данных, откуда был получен массив для цикла, и скрипт убрала, а этот гад всё шлёт мне емейлы. Помогите кто-нибудь: что мне делать? Как остановить процесс?!

Не надо только мне писать, что дура: сама знаю, что надо было сначала проверить на echo, какой будет результат. Но я была голодная, голова не работала, сунула сразу с мейлом на сервер. И теперь не знаю что делать! :confused:
 

tony2001

TeaM PHPClub
>Как? Я только начинаю ковыряться с РНР. Подскажите!

вы не поверите, но методы на Unix и Windows различаются кардинально.
я не могу угадать какой из них вам нужен.
 

Angl

Новичок
Автор оригинала: tony2001

вы не поверите, но методы на Unix и Windows различаются кардинально.
я не могу угадать какой из них вам нужен.
Сервер не мой, провайдера. Я не в курсе, что там у них стоит.
А убить может только админ сервера, самой никак?
 

tony2001

TeaM PHPClub
в таком случае проще всего обратиться в поддержку провайдера.

> А убить может только админ сервера, самой никак?

не имея возможности зайти на сервер - никак.
 

Angl

Новичок
Я только в своих папках могу рыться, где файлы и скрипты навалены. В системные у меня доступа нет. :(
 

Angl

Новичок
Автор оригинала: tony2001
в саппорт, в саппорт.
Стыдна, не хоцца позорицца. :(
Кстати, мейлы прекратились чего-то... Вот уже минут 15 как тихо. Мог процесс сам по себе заглохнуть (с убиранием скрипта, к примеру) - или он, когда запущен, от скрипта уже не зависит? Если не зависит, то почему больше не шлёт ничего?

-~{}~ 12.06.08 04:02:

Я теперь вообще ничего не понимаю. Протестировала тот же скрипт на локальном компьютере, в Денвере - всё работает прекрасно, и с echo, и с мейлом. На сервер грузить боюсь: а вдруг опять глюкнет? Посмотрите, пожалуйста: может, вы поймёте, что это было?

$query = "SELECT `besked`, `ordr` FROM `$TableName2` WHERE `emal`='$email'";

$result = mysql_query($query) or die(mysql_error());

$number = mysql_num_rows($result);

$row = mysql_fetch_array($result);


if ($number==0) {
echo "Ваш заказ не найден в базе данных.<br>\n";

} else {
while ($row = mysql_fetch_array($result)) {
$body = $row['besked']." Ваш номер ".$row['ordr'];
$eml = mail($email, $subject, $body, "From: $mail_from");
}
}
 

AmdY

Пью пиво
Команда форума
пипец, сама себя заспамила :)
сделай один проход или вставь проверку реал-тайм условия и die(); а у тебя данные выбрались, скрипт в памяти и всё пофег.
бедненькая, до 01:21 - это жестоко

-~{}~ 12.06.08 03:13:

например if ( ! file_exists('имя_фала') ) die('Фак, меня убивают!!!');
 

Angl

Новичок
Я, наверное, лучше через for сделаю - надёжнее будет. Всегда через for писала, а тут дёрнул чёрт упростить.

Нет, ну а что со скриптом-то не так, который выше? Почему на локальном сервере работает нормально: если 3 заказа есть в базе данных - шлёт 3 емейла, как надо. С какого фига он он взглючил на сервере у провайдера?
 

Angl

Новичок
Проблема в том, что скрипт работает как надо на локальном компьютере (в Денвере). А на сервере провайдера выдал такую дрянь! Как его отлаживать-то, если он работает у меня без ошибок? Опять грузить на сервер, чтобы опять устроить себе ночное сидение с чисткой ящика, что ли? Я просто боюсь уже. Поэтому и попросила вас взглянуть на скрипт профессиональным глазом: что там может быть не так?
 

Angl

Новичок
Так сервер же не мой, а провайдера. У меня там есть доступ только к моим файлам. Если я опять запущу процесс с ошибкой, то не смогу его убить. :(

Поэтому и спрашиваю: если кто-то рассылал письма с выборкой из баз данных, то возможно увидит явную ошибку в скрипте?
И всё равно мне не понятно, почему работает на локальном сервере без проблем.
 

Garret

Кто здесь?
Уже писали насчет дэбага. Попробуйти сделать на сервере банальный вывод а не отправку сообщения, и посмотрите все ли нормально.
 

kruglov

Новичок
И ограничение на количество циклов, типа if(++$i>100) break;

-~{}~ 12.06.08 13:58:

> $number = mysql_num_rows($result);
И что там в $number?

-~{}~ 12.06.08 14:02:

Поэтому и спрашиваю: если кто-то рассылал письма с выборкой из баз данных, то возможно увидит явную ошибку в скрипте?
Не надо рассматривать программы как цельные вещи. Надо рассматривать ее как последовательность кусочков, которые можно заменить на что-то другое, проверить работоспособность по отдельности. Вот вы даже не знаете, в чем проблема, в том, что функция mail вызывается мильон раз или хостер глючный, на один вызов mail присылает тучу писем. А ведь выяснить это не просто, а очень просто. И именно это и называется отладка. И почитайте, пожалуйста, ссылку, данную Апокалипсисом, ведь специально для облегчения участи начинающих программистов написано.
 

cDLEON

Онанист РНРСlub
А ищё, этот скрипт будет кушать самый первый имэйл ^^
 

Angl

Новичок
И почитайте, пожалуйста, ссылку, данную Апокалипсисом, ведь специально для облегчения участи начинающих программистов написано.
Да я вроде почитала. Там говорится всё о неработающих программах. А если она работает на моём компьютере? Глюк на сервере?

Ну его тогда на фиг, не буду я вообще с этим while связываться. Хотя, попробую через простой вывод, это не опасно.

> $number = mysql_num_rows($result);
И что там в $number?
В Денвере - всё нормально: при выводе $number равно 3. Там так и есть - 3 заказа, отсылает 3 мейла. На сервере ещё не пробовала. Сейчас возьмусь.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху