За последние 24 часа нас посетил 17601 программист и 1310 роботов. Сейчас ищут 926 программистов ...

Отправка почты на PHP+js

Тема в разделе "Работа с почтой", создана пользователем Nyashka, 3 фев 2013.

  1. Nyashka

    Nyashka Активный пользователь

    С нами с:
    3 фев 2013
    Сообщения:
    5
    Симпатии:
    0
    Реализовал такую схему. Есть очередь уведомлений пользователям (таблица), в которую заносятся записи в результате действий других пользователей. Отправляются на мейлы один раз в определенный (заданный) промежуток времени, скажем, раз в час: цепляются все уведомления по одному пользователю и отсылаются одним письмом, и так каждому. Но не более определенного количества емейлов за этот час, ввиду ограничения хостера.
    Как работает. При каждом посещении главной страницы по отдельной таблице проверяется время последней отправки и, если прошло больше заданного интервала, то письма кидаются на мейлы, время обновляется. Чтобы в этот момент главная не тормозила, запрос на отсыл кидается ajax-ом. Скрипт не ждет ответа, а просто запускает серверный php-скрипт. А пользователь, инициировавший процесс, может гулять по сайту дальше или вовсе уйти.
    Если посещаемость, хотя бы 1 в час, то долго ждать не приходится. Если меньше, то интервал больше, но зато и уведомлений подкапливается так, что общее кол-во "спама" уменьшается.
    Насколько безопасна такая схема? Я в курсе, что есть всякие планировщики, но они не на всех хостингах и вообще хотелось без них.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну скажем у движка этого форума планировщик реализован примерно так же - если давно не выполнялись какие-то действия - какому-то случайному пользователю в исходный код страницы вставляется ссылка на картинку. браузер пытается открыть эту картинку. а на том конце - скрипт, который выдает пользователю один пиксель изображения, закрывает соединение (чтоб юзер не ждал окончания работы скрипта) и начинает лопатить таблицу заданий.
     
  3. Nyashka

    Nyashka Активный пользователь

    С нами с:
    3 фев 2013
    Сообщения:
    5
    Симпатии:
    0
    А зачем картинка? Почему просто не кинуть задание ajax-запросом? (Будет он воткнут в код страницы или нет, определяется по времени еще на стадии формирования ее на php)
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а этот вопрос предлагаю переадресовать к The phpBB Group. на самом деле-то какая разница как именно организован крон - включением картинки с ссылкой на сценарий или аяксом. можно еще через редиректы временно отправить пользователя на ответственное задание. я привел пример phpBB потому что у них - картинкой, у вас - аяксом.

    а вопрос безопасности - это как безопасно этот вызов организован, дырявые ли скрипты и тп, вот и все.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это называется "крон для бедных" =)

    Добавлено спустя 38 секунд:
    ой вот только не надо тут ладно =)
     
  6. Nyashka

    Nyashka Активный пользователь

    С нами с:
    3 фев 2013
    Сообщения:
    5
    Симпатии:
    0
    Нет, крон для не подсевших на крон)
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    подсевших? что простите? что за чушь? =) Вы считаете единожды попробовав крон, люди будут использовать крон снова и снова? Даже может быть по ночам? По выходным и праздничным дням? А некоторые - ежеминутно!

    Нет, я не хочу верить в такие ужасы.
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    omg! где тут клуб анонимных ежеминутно-кронщиков?
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    Лично для меня, возможность ежеминутного использования стала главной прелестью крона