PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 5
Lipser Отправлено: 21 Августа, 2014 - 16:55:58 • Тема: sleep в цикле foreach • Форум: Вопросы новичков

Ответов: 9
Просмотров: 1716
начинает приходить понимание, что если адресов будет 1000, то на выполнение скрипта уйдет 10 часов, при этом браузер нельзя закрывать ..
Как это правильно сделать через cron? )) там какая логика работы? Браузер будет открываться или передаваться на выполнение будет сам скрипт php?
Lipser Отправлено: 21 Августа, 2014 - 16:37:16 • Тема: sleep в цикле foreach • Форум: Вопросы новичков

Ответов: 9
Просмотров: 1716
Tyoma5891 пишет:
заносите список в эксель или в бд в табличку и вперед

Не, это для меня пока mission imposible ))
у меня нет конкретной задачи это реализовать, я для себя научиться хочу...
Lipser Отправлено: 21 Августа, 2014 - 16:09:12 • Тема: sleep в цикле foreach • Форум: Вопросы новичков

Ответов: 9
Просмотров: 1716
Так уже пробовал, не помогает. Как правильно сделать ?

И сразу еще одна нерешенная проблема - как выводить сообщения из цикла об оставшихся отправках в одной и той же строке ? иначе при получается некрасивый длинный листинг из сообщений...
(Добавление)
[quote=Tyoma5891][/quote]
А как по крону ? Если у меня в списке будет допустим 120 адресов, а ограничение у хостера до 100 сообщений в час ? Он же мне все равно все разом отправит...
Lipser Отправлено: 21 Августа, 2014 - 15:57:39 • Тема: sleep в цикле foreach • Форум: Вопросы новичков

Ответов: 9
Просмотров: 1716
Добрый день всем!
Вторую неделю изучаю php )) Какие то непонятки получается решить самому при более внимательном изучении кода, какие то не могу понять совсем, поэтому прошу помощи.

Сейчас столкнулся с непонятным для меня поведением sleep в цикле foreach. Задача скрипта рассылать клиентам сообщения, не превышая разрешенное хостером в час. Для этого в цикл рассылки был вставлен оператор sleep:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.   if ( (isset($_POST['submit'])) && (isset($_FILES['file'])) && ($_FILES['file']['name'] != null) )
  3.  {
  4.      
  5.         // Формируем массив с адресами email для рассылки
  6.         $fileString = file_get_contents($_FILES['file']['tmp_name']);
  7.         $emailsArray = explode("\n",$fileString);
  8.  
  9.         // Подсчитываем кол-во адресов
  10.         $emailsCount = count($emailsArray);
  11.         $emailsCountTotal = $emailsCount;
  12.  
  13.         // Отправляем сообщения
  14.         foreach($emailsArray as $email)
  15.         {
  16.         echo 'Осталось отправить '.$emailsCount.' из '.$emailsCountTotal.'. Отправляем сообщение для: '.$email.'<br />';
  17.         mail($email,$_POST['subject'],$_POST['message']);
  18.         sleep(5);
  19.         $emailsCount--;
  20.         }
  21. }      
  22. ?>
  23.  


Подразумевается, что после отправки каждого сообщения будет выдерживаться пауза в 5 секунд, после чего цикл продолжится. На самом деле это не работает: после нажатия submit браузер дает понять что все еще продолжается загрузка в течение имхо больше 5 секунд, после чего скрипт отправляет все сообщения разом.
Подскажите, что я не так делаю ?

P.s. Скрипт пока черновой, без проверок и прочих прелестей, сейчас надо только отработать механизм.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB