Zend_Mail отправить и Zend_Progressbar - PullRequest
2 голосов
/ 11 ноября 2011

Кто-нибудь знает хороший пример, как отправлять почту с вложениями и отображать индикатор выполнения в JavaScript (jQuery)?

1 Ответ

0 голосов
/ 12 ноября 2011

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

Учитывая, что в PHP нет потоков, я бы предложил иметь очередь базы данных для доставок и иметь внешний процесс PHP, запускаемый с основного сайта (или через cron), который обрабатывает доставки всторона, отмечая в базе данных текущий статус каждой доставки: NOT_PROCESSED, IN_PROGRESS, CONNECTING, CONNECTED, SENDING_DATA, ACCEPTED, FAILURE_X.Вы можете запрашивать у базы данных статус каждой доставки через Ajax.

Если PHPMailer внутренне использует стандартную функцию PHP mail (), которая использует SMTP-сервер ретрансляции на вашем компьютере, вы не можете иметь столько информации о состоянии(что было бы, если бы вы сами создали сокеты), у вас может быть только три основных состояния NOT_PROCESSED, IN_PROGRESS, FAILURE_X.

Возможно ли отправлять почту асинхронно с использованием PHP, давая пользователюОтзыв о доставке?

В противном случае, возможно, вы сможете обновить индикатор выполнения после каждого маленького шага.Нечто подобное:

  1. Установить получателя почты
    • индикатор выполнения обновления 25%
  2. Установить почту с адреса
    • индикатор выполнения обновления 50%
  3. установка заголовков почты
    • индикатор выполнения обновления 75%
  4. отправка почты
    • обновить индикатор выполнения до 100%

Это, однако, действительно неэффективно .. И конечным результатом, вероятно, будет то, что пользователь увидит, как индикатор выполнения очень быстро прыгнет через первоетри (25%, 50%, 75%), а затем застряли на 75% в течение дополнительной секунды или двух, а затем сделать это ..

...