PHP: добавление таймера - PullRequest
       7

PHP: добавление таймера

0 голосов
/ 27 сентября 2010

Я создаю приложение для списка рассылки. Он будет отправлять 40 писем в час из-за ограничений почтовой службы. Как я могу добавить таймер?

Ответы [ 4 ]

3 голосов
/ 27 сентября 2010

Если вам нужно создать запланированное задание, я бы предложил создать Cron Job .

1 голос
/ 27 сентября 2010

Вы можете приостановить выполнение сценария с помощью функции sleep(). Однако это не очень хорошее решение. Гораздо лучший подход - использовать Cron , который позволяет выполнять скрипт раз в 40 минут. Сам скрипт должен только проверять, сколько раз он был выполнен - ​​эта информация может быть сохранена в каком-то файле:

$counter = file_exists('counter') ? file_get_contents('counter') : 1;

echo sprintf('Send %d portion of emails.', $counter);

file_put_contents('counter', ++$counter);
0 голосов
/ 27 сентября 2010

Одним из решений было бы создание таблицы базы данных для хранения подробностей отправленных вами электронных писем.Допустим, это выглядит так:

CREATE TABLE SentEmail (
    email_id INT NOT NULL,
    recipient_id INT NOT NULL,
    time_sent DATETIME NOT NULL,
    PRIMARY KEY (email_id, recipient)
)

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

Теперь, когда вы хотите отправлять электронные письма, вы захотите узнать

  • , сколько писем было отправлено в этот час;это можно найти с помощью COUNT запроса
  • , которому уже было отправлено письмо, с которым вы сейчас работаете;это также простой запрос.

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

Вы бы совмещали этот подход с заданием Cron, как предлагали другие, чтобы регулярно обрабатывать очередь писем.

0 голосов
/ 27 сентября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...