The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как заставить рассылку работать с определенным интервалом?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как заставить рассылку работать с определенным интервалом?" 
Сообщение от Lexx emailИскать по авторуВ закладки(??) on 04-Июн-05, 16:08  (MSK)
Приветствую. У меня вот такая трабла: мой сайт расположен на Фатале (Fatal.ru). Мне нужно установить рассылку новостей постоянным посетителям, просто чтобы сообщать об обновлении на сайте раз в несколько дней. Но на Фатале установлено ограничение для работы сендмейла в 1 минуту. Скрипт у меня есть, причем рабочий. Если в базе указан только один адрес, письмо свободно отправляется. Если же больше одного, получает отправленное только первый адрес, а все последующие нет, хотя указывается, что "успешно отправлено *** писем".
А вопрос в следующем: был у меня другой скрипт, но он на пхп (на фатале плохо приживается, и вообще скрипт глючный). И там была возможность задавать ограничение на отправку писем, т.е. с интервалом в столько-то секунд.
Вопрос: можно ли подобное прописать в моем скрипте?

ЗЫ: сразу говорю, никакого программерского образования не имею, и со скриптами работаю не так давно, и знаю только основы, но быстро учусь... =))

__________________________
http://script.woweb.ru/index.htm/id/1064206756 - глючный скрипт на пхп с возможностью устанавливать интервал отправки;
http://script.woweb.ru/index.htm/id/1023464395 - неглючный скрипт на перле без оной возможности;

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от PoizOn emailИскать по авторуВ закладки(ok) on 06-Июн-05, 12:01  (MSK)
>Приветствую. У меня вот такая трабла: мой сайт расположен на Фатале (Fatal.ru).
>Мне нужно установить рассылку новостей постоянным посетителям, просто чтобы сообщать об
>обновлении на сайте раз в несколько дней. Но на Фатале установлено
>ограничение для работы сендмейла в 1 минуту. Скрипт у меня есть,
>причем рабочий.
Лучше поставь его на cron


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от Lexx emailИскать по авторуВ закладки(??) on 06-Июн-05, 21:45  (MSK)
>Лучше поставь его на cron

Эмм, вопрос может быть довольно глупый, но что такое этот корн? Ну, если в двух словах. И где о нем можно почитать?..

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 07-Июн-05, 01:10  (MSK)
>Эмм, вопрос может быть довольно глупый, но что такое этот корн? Ну,
>если в двух словах. И где о нем можно почитать?..

Крон - это запуск твоих скриптов по расписанию.
Указываешь время и название программы, которую надо запускать - и все.
Только на бесплатном хостинге такое вряд-ли поддерживается.
У нас есть, но это не бесплатный хостинг.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от PoizOn emailИскать по авторуВ закладки(ok) on 07-Июн-05, 10:00  (MSK)
>>Эмм, вопрос может быть довольно глупый, но что такое этот корн? Ну,
>>если в двух словах. И где о нем можно почитать?..
>
>Крон - это запуск твоих скриптов по расписанию.
>Указываешь время и название программы, которую надо запускать - и все.
>Только на бесплатном хостинге такое вряд-ли поддерживается.
>У нас есть, но это не бесплатный хостинг.
Если доступа к крону нет - то тогда можешь попытаться изменить скрипт, это в принципе не сложно, поставь в самом начале запись в файл времени старта скрипта - и при каждой процедуре отправки письма следующему адресату - проверяй этот файл и сравнивай с текущем временем. Но если у тебя программерских знаний нет - то тут будет сложно.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от Lexx emailИскать по авторуВ закладки(??) on 07-Июн-05, 15:44  (MSK)
>Если доступа к крону нет - то тогда можешь попытаться изменить скрипт,
>это в принципе не сложно, поставь в самом начале запись в
>файл времени старта скрипта - и при каждой процедуре отправки письма
>следующему адресату - проверяй этот файл и сравнивай с текущем временем.
>Но если у тебя программерских знаний нет - то тут будет
>сложно.

Хмм... Оных знаний у меня и правда нет... Но надо же когда-то учиться! )) Если бы кто подсказал, какие именно команды задают запись времени...

А вот может получится как-то использовать вот такой отрывок из другого скрипта на том же перле?

---------------------------------
# Does your host require a sleep between blocks of e-mails sent?
$usesleep = 'yes';

# How many e-mails are sent in one block?
$blocksize = '100';

# How long to sleep between blocks (in seconds)?
$sleeptime = '70';
....

----------------------------------
.....
print MAIL "All Rights Reserved.\n"; close (MAIL);
if ($usesleep !~ 'n' && $sendcnt eq $blocksize) {
sleep $sleeptime;
$sendcnt = 0;
}
}
}
}

if (!$FORM{'sendmessage'}) {....
------------------------------------------

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


А это (по-моему дилетанскому мнению) кусок из моего скрипта, выполняющий ту же функцию:
------------------------------------------------
#Собственно рассылка
my $sentok=0; my $senterr=0;
my $boundary="--Boundary_$$.pvdlab.net";
open (LOG,">logsent.txt");
print LOG "-----------Начало отправки ----------\n";
while (<ABOOK>) {
chomp; s/\r+$//;
next if !$_;
($email, $charset, $mode)=split(/\x01/, $_, 3);
$charset=$defcharset if (!$charset);
$mode=$defmode if (!$mode);

$flg=0;
open (MZ,$MAIL_PROGRAM) or $flg=1;
if ($flg==0)
  {  print MZ "To: $email\n";
     print MZ "From: $from{$charset}\n";
     print MZ "Subject: $subj{$charset}\n";
     print MZ "MIME-Version: 1.0\n";
if ($attflg==1) {
print MZ "Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
print MZ "\n";
print MZ "This is a multi-part message in MIME format.\n";
print MZ "\n";

#текст письма
print MZ "--$boundary\n";

     print MZ "Content-Type: $chset{$mode}\; charset=\"$chset{$charset}\"\n";
     print MZ "Content-Transfer-Encoding: 8bit\n\n";
     print MZ $msg{"$charset\_$mode"};
     print MZ "\n\n";

     my $i=1; my $maxfiles=10;
    while ($i<$maxfiles+1) {
          if ($in{"srcfile$i"}) {

#Аттачмент
print MZ "--$boundary\n";
print MZ "Content-Type: ", $in{"ctfile$i"}, "; name=\"", $in{"file$i"}, "\"\n";
print MZ "Content-Transfer-Encoding: Base64\n";
print MZ "Content-Disposition: attachment; filename=\"", $in{"file$i"}, "\"\n";
print MZ "\n";
print MZ $in{"srcfile$i"};
print MZ "\n\n";

          }
       $i++;
     }


#конец письма
print MZ "--$boundary--\n";

   }
    else {
     print MZ "Content-Type: $chset{$mode}\; charset=\"$chset{$charset}\"\n";
     print MZ "Content-Transfer-Encoding: 8bit\n\n";
     print MZ $msg{"$charset\_$mode"};
print MZ "\n\n";
         }
close (MZ); $sentok++;
print LOG "$email - Ok\n";
  } else {$senterr++; print LOG "---- Ошибка отправки $email \n";}

}
close(ABOOK);
print LOG "-----------Конец отправки ----------\n";
#Собственно рассылка
my $sentok=0; my $senterr=0;
my $boundary="--Boundary_$$.pvdlab.net";
open (LOG,">logsent.txt");
print LOG "-----------Начало отправки ----------\n";
while (<ABOOK>) {
chomp; s/\r+$//;
next if !$_;
($email, $charset, $mode)=split(/\x01/, $_, 3);
$charset=$defcharset if (!$charset);
$mode=$defmode if (!$mode);

$flg=0;
open (MZ,$MAIL_PROGRAM) or $flg=1;
if ($flg==0)
  {  print MZ "To: $email\n";
     print MZ "From: $from{$charset}\n";
     print MZ "Subject: $subj{$charset}\n";
     print MZ "MIME-Version: 1.0\n";
if ($attflg==1) {
print MZ "Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
print MZ "\n";
print MZ "This is a multi-part message in MIME format.\n";
print MZ "\n";

#текст письма
print MZ "--$boundary\n";

     print MZ "Content-Type: $chset{$mode}\; charset=\"$chset{$charset}\"\n";
     print MZ "Content-Transfer-Encoding: 8bit\n\n";
     print MZ $msg{"$charset\_$mode"};
     print MZ "\n\n";

     my $i=1; my $maxfiles=10;
    while ($i<$maxfiles+1) {
          if ($in{"srcfile$i"}) {

#Аттачмент
print MZ "--$boundary\n";
print MZ "Content-Type: ", $in{"ctfile$i"}, "; name=\"", $in{"file$i"}, "\"\n";
print MZ "Content-Transfer-Encoding: Base64\n";
print MZ "Content-Disposition: attachment; filename=\"", $in{"file$i"}, "\"\n";
print MZ "\n";
print MZ $in{"srcfile$i"};
print MZ "\n\n";

          }
       $i++;
     }


#конец письма
print MZ "--$boundary--\n";

   }
    else {
     print MZ "Content-Type: $chset{$mode}\; charset=\"$chset{$charset}\"\n";
     print MZ "Content-Transfer-Encoding: 8bit\n\n";
     print MZ $msg{"$charset\_$mode"};
print MZ "\n\n";
         }
close (MZ); $sentok++;
print LOG "$email - Ok\n";
  } else {$senterr++; print LOG "---- Ошибка отправки $email \n";}

}
close(ABOOK);
print LOG "-----------Конец отправки ----------\n";

-----------------------------------------------------------

Вот я думаю, как бы пристроить тот верхний кусок в нижний скрипт отправки... (мена постоянно путают эти скобки "{}" - не врубаюсь, что и где они ограничивают, и где конец, а где начало... *_*) При попытке сделать это методом "пальцем в небо" выдавались ошибки...

ЗЫ: Извиняюсь за выкладывание сюда таких огромных кусков скрипта, но самостоятельно мне с этим не разобраться... *_*

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от PoizOn emailИскать по авторуВ закладки(ok) on 07-Июн-05, 16:28  (MSK)
>
>А это (по-моему дилетанскому мнению) кусок из моего скрипта, выполняющий ту же
>функцию:
>------------------------------------------------
>#Собственно рассылка
>my $sentok=0; my $senterr=0;
>my $boundary="--Boundary_$$.pvdlab.net";
>open (LOG,">logsent.txt");
>print LOG "-----------Начало отправки ----------\n";
>while (<ABOOK>) {
> chomp; s/\r+$//;
> next if !$_;
> ($email, $charset, $mode)=split(/\x01/, $_, 3);
> $charset=$defcharset if (!$charset);
> $mode=$defmode if (!$mode);
>
> обрезал
Вот сюда вставь:

while (<ABOOK>) {
chomp; s/\r+$//;
next if !$_;
sleep($timeout) if $timeout;# вот эту строку

А в самое начало скрипта (там где у тебя:
>#Собственно рассылка
>my $sentok=0; my $senterr=0; my $timeout=0;# вот это

Если $timeout=0, то задержки не будет - если чему-то равно - то будет задержка на это "чего-то": к примеру для 100 секунд поставь $timeout=100; и т.п

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от Lexx emailИскать по авторуВ закладки(??) on 07-Июн-05, 17:10  (MSK)
>Вот сюда вставь:
>
>while (<ABOOK>) {
>chomp; s/\r+$//;
>next if !$_;
>sleep($timeout) if $timeout;# вот эту строку
>
>А в самое начало скрипта (там где у тебя:
>>#Собственно рассылка
>>my $sentok=0; my $senterr=0; my $timeout=0;# вот это
>
>Если $timeout=0, то задержки не будет - если чему-то равно - то
>будет задержка на это "чего-то": к примеру для 100 секунд поставь
>$timeout=100; и т.п


Эхх, а по началу все так хорошо шло... Даже страница с загрузкой рассылки запустилась. )) Но... после двух минут ожидания при отправки "тест" на два адреса браузер выдает ошибку 500 - невозможно отобразить страницу из-за внутренней ошибки сервера.. :(
Видимо, у меня кривые руки... Или руки нормальные, но сервер кривой... *_*

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от Lexx emailИскать по авторуВ закладки(??) on 07-Июн-05, 17:15  (MSK)
>Эхх, а по началу все так хорошо шло... Даже страница с загрузкой
>рассылки запустилась. )) Но... после двух минут ожидания при отправки "тест"
>на два адреса браузер выдает ошибку 500 - невозможно отобразить страницу
>из-за внутренней ошибки сервера.. :(
>Видимо, у меня кривые руки... Или руки нормальные, но сервер кривой... *_*
>


Хмм, удивительный факт: письма-таки дошли! =)) Хотя всего три из четырех, но это все-таки лучше, чем ничего! )) Значит скриптик-то работает, но немножко глючно - не отображает страницу, которая должна вывестись после отправки. Ну, где статистика приводится об отправке и т.п. Да в общем-то и черт бы с ней, лишь бы письма отсылались! )) Но это был тест с двумя адресами, и не знаю, как будет реагировать браузер, если будет все 85 подписчиков... ))

Но, в любом случае, огромнейшее безграничное мерси за подсказку! ;)) Оказывается, есть еще на свете люди, которым не лень помогать ламерам! ))

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от PoizOn emailИскать по авторуВ закладки(ok) on 07-Июн-05, 17:25  (MSK)
>>Вот сюда вставь:
>>
>>while (<ABOOK>) {
>>chomp; s/\r+$//;
>>next if !$_;
>>sleep($timeout) if $timeout;# вот эту строку
>>
>>А в самое начало скрипта (там где у тебя:
>>>#Собственно рассылка
>>>my $sentok=0; my $senterr=0; my $timeout=0;# вот это
>>
>>Если $timeout=0, то задержки не будет - если чему-то равно - то
>>будет задержка на это "чего-то": к примеру для 100 секунд поставь
>>$timeout=100; и т.п
>
>
>Эхх, а по началу все так хорошо шло... Даже страница с загрузкой
>рассылки запустилась. )) Но... после двух минут ожидания при отправки "тест"
>на два адреса браузер выдает ошибку 500 - невозможно отобразить страницу
>из-за внутренней ошибки сервера.. :(
>Видимо, у меня кривые руки... Или руки нормальные, но сервер кривой... *_*
>
Поставь таймаут поменьше, просто скорее всего на хостинге стоит ограничение по времени на работу скрипта, в среднем это 30 минут -но на халяве может быть и меньше.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 07-Июн-05, 17:38  (MSK)
>Поставь таймаут поменьше, просто скорее всего на хостинге стоит ограничение по времени
>на работу скрипта, в среднем это 30 минут -но на халяве
>может быть и меньше.

какие 30 минут? вы что? 30 секунд - минута!!! и то это много!!!
для того, что-бы это ограничение обойти надо после каждого таймаута запускать НОВЫЙ процесс, а старый - убивать.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от PoizOn emailИскать по авторуВ закладки(ok) on 07-Июн-05, 17:41  (MSK)
>>Поставь таймаут поменьше, просто скорее всего на хостинге стоит ограничение по времени
>>на работу скрипта, в среднем это 30 минут -но на халяве
>>может быть и меньше.
>
>какие 30 минут? вы что? 30 секунд - минута!!! и то это
>много!!!
>для того, что-бы это ограничение обойти надо после каждого таймаута запускать НОВЫЙ
>процесс, а старый - убивать.
Может быть -я просто слышал что ограничение - но сам как-то не когда не сталкивался с этим

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от Lexx emailИскать по авторуВ закладки(??) on 07-Июн-05, 17:46  (MSK)
>>Поставь таймаут поменьше, просто скорее всего на хостинге стоит ограничение по времени
>>на работу скрипта, в среднем это 30 минут -но на халяве
>>может быть и меньше.
>
>какие 30 минут? вы что? 30 секунд - минута!!! и то это
>много!!!
>для того, что-бы это ограничение обойти надо после каждого таймаута запускать НОВЫЙ
>процесс, а старый - убивать.

Эм, на главной там говорится только про ограничение сендмейла на 60 сек... А про то, что скрипты хоть как-то ограничены в этом плане не слова...

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Как заставить рассылку работать с определенным интервалом?" 
Сообщение от Lexx emailИскать по авторуВ закладки(??) on 07-Июн-05, 15:28  (MSK)
>Крон - это запуск твоих скриптов по расписанию.
>Указываешь время и название программы, которую надо запускать - и все.
>Только на бесплатном хостинге такое вряд-ли поддерживается.
>У нас есть, но это не бесплатный хостинг.

Мдя, если бесплатник не поддерживает, тогда я пролетаю... У меня просто не коммерческий проект - это фансайт, плюс ролевая игра. А если я даже такие сайты буду вешать на платник, это я в конец разорюсь... *_*

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру