Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

php: рассылка и вывод из MySQL

393
15 апреля 2005 года
Couger
128 / / 13.04.2003
Такие задачки:

1. Достаю из базы, например, сотню email адресов.
Мне нужно в цикле перебрать их все и отправить на каждый email письмо. Проблем-то вроде нет, только на серваке можно за один раз отправить не более 20 писем, далее вылетает ошибка. Можно, конечно, постепенно отправлять наполовину вручную, но хотелось бы, что бы все происходило само с небольшими задержками по времени между рассылками 20 писем и при этом, эти паузы не отражались на сервере. Как это можно реализовать?

2. Из БД выводится какая-то инфа, строится табличка. Как можно сделать что бы табличка выводилась по мере считывания из базы за один проход по циклу, а не после полного прочтения информации? Почему-то flush() не помогает.
4
15 апреля 2005 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by Couger
Такие задачки:
1. Достаю из базы, например, сотню email адресов.
Мне нужно в цикле перебрать их все и отправить на каждый email письмо. Проблем-то вроде нет, только на серваке можно за один раз отправить не более 20 писем, далее вылетает ошибка. Можно, конечно, постепенно отправлять наполовину вручную, но хотелось бы, что бы все происходило само с небольшими задержками по времени между рассылками 20 писем и при этом, эти паузы не отражались на сервере. Как это можно реализовать?
[quote]

Отправляешь за одно обращение 20 писем. Через 3 секунды браузер редиректися на эту же страницу, но с другими параметрами и отправляешь следующие 20 писем, и так далее.

[quote
2. Из БД выводится какая-то инфа, строится табличка. Как можно сделать что бы табличка выводилась по мере считывания из базы за один проход по циклу, а не после полного прочтения информации? Почему-то flush() не помогает.



И не поможет. MSIE рисует таблицу только после того как встретит тег </table>. Вариант один - разбить таблицу на несколько, например по 10 строк.

393
15 апреля 2005 года
Couger
128 / / 13.04.2003
Цитата:
Originally posted by mike
Отправляешь за одно обращение 20 писем. Через 3 секунды браузер редиректися на эту же страницу, но с другими параметрами и отправляешь следующие 20 писем, и так далее.


Это понятно, примерно такие мысли и были. Но разве нет возможности обрывать на некоторое время выполнение кода, недавая высокую нагрузку на сервер. Например какая-нибудь ф-ция sleep() или что-то ещё?

Цитата:
Originally posted by mike
И не поможет. MSIE рисует таблицу только после того как встретит тег </table>. Вариант один - разбить таблицу на несколько, например по 10 строк.


Да, догадывался :)... А реально (без таблиц) эту ситуацию flushем можно же разрулить?

4
17 апреля 2005 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by Couger
Это понятно, примерно такие мысли и были. Но разве нет возможности обрывать на некоторое время выполнение кода, недавая высокую нагрузку на сервер. Например какая-нибудь ф-ция sleep() или что-то ещё?



Можно [phpdoc]sleep[/phpdoc]ом спасть. Только не забудь тогда про [phpdoc]set_time_limit[/phpdoc]


Цитата:

Да, догадывался :)... А реально (без таблиц) эту ситуацию flushем можно же разрулить?



нет. MSIE все равно нарисует таблицу только после того как получит </table>

393
17 апреля 2005 года
Couger
128 / / 13.04.2003
Не сталкивался с set_time_limit.
На сколько я понял, если я выполняю sleep(10), то желательно и set_time_limit(10), что бы уеличить допустимое время выполнения скрипта на 10 сек. до фатальной ошибки, так?
4
17 апреля 2005 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by Couger
Не сталкивался с set_time_limit.
На сколько я понял, если я выполняю sleep(10), то желательно и set_time_limit(10), что бы уеличить допустимое время выполнения скрипта на 10 сек. до фатальной ошибки, так?



Нет, в set_time_limit задается время через которое скрипт будет принудительно остановлен. Отсчет времени начинается с момента запуска скрипта.

set_time_limit(10) - скрипт прибьется через 10 секунд после старта.

Занчание по умолчанию - 30

set_time_limit(0) - скрипт будет работать без ограничения времени выполнения.

Я рекомендую поставить что-то вроде set_time_limit(3600);

393
17 апреля 2005 года
Couger
128 / / 13.04.2003
Спасибо! Реализуем...
287
17 апреля 2005 года
Shiizoo
958 / / 14.03.2004
Непонял, ты за один раз шлешь 20 писем, или письмо на 20 адресов? Если письмо аналогично для всех шли сразу на макс. допустимое количество получателей.
393
17 апреля 2005 года
Couger
128 / / 13.04.2003
Цитата:
Originally posted by Shiizoo
Непонял, ты за один раз шлешь 20 писем, или письмо на 20 адресов? Если письмо аналогично для всех шли сразу на макс. допустимое количество получателей.



Одно и тоже письмо на 20 получателей, точнее, их гораздо больше, но можно максимум 20 писем отправить, что и делается... Но нужно всей толпе отправить, поэтому придется прибегать к особым мерам.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог