Запуск скрипта через некоторое время

kimisa

Новичок
Заказчик дал задачу: нужно, чтобы через 15 минут после регистрации пользователя ему отправлялось письмо. Я не могу придумать как это сделать. Т.к. если использовать sleep, то скрипт просто зависает(в плане останавливает работу). А если в это время зарегистрируется еще один пользователь? Запуск по крону тоже не то, т.к. отсчет времени идет от регистрации. На ум что-то ничего не приходит. Это вообще реализуемо?
 

michelle

Новичок
Как вариант - делаешь табличку в базе в которую кидаешь время регистрации.
И потом раз в минуту кроном ее разбираешь на предмет текущих отправлений - кому подошел срок, отправить и поставить флаг что отправил или удалить такую запись.
 

kimisa

Новичок
Блин, а нет более красивого решения? Т.к. работаю на базе цмс. Она сама жрет ресурсы, а тут каждую минуту еще доп запрос к базе. Но решение с новой таблицей более красивое, нежели каждый раз делать запрос во все места и определять было ли отправлено письмо для нового пользователя.
 

antson

Новичок
Партнер клуба
@kimisa, а цмс нет готового функционала очереди почтовых уведомлений ?
если движок отпочковался от codeIgnitor, то там немного докрутить класс Emailer. Добавить поле "выслать не ранее" и поменять чуть метод обработки с учетом этого .
 

antson

Новичок
Партнер клуба
кроме крона, задачу по другому не решить.
 

kimisa

Новичок
Нет там такого. Это битрикс (не надо кидать помидорами, работаю с тем, где больше платят).
 

kimisa

Новичок
Я просто думала может что-то пропустила, может есть такой функционал у php. Ок, придется на крон сажать.
 

antson

Новичок
Партнер клуба
в битриксе есть возможность отправки сообщений через очередь
см /bitrix/modules/main/tools/cron_events.php
 

kimisa

Новичок
создай новую базу только для очереди
Это как бы очередь и не очередь, т.к. время между их выполнением может быть разное. В данном случае получается что крон с создание отдельной таблицы для очереди наиболее простое решение.
 

AnrDaemon

Продвинутый новичок
Может, вам лучше вообще не работать? Просто получать деньги… ну, раз ничего делать не хотите?
 

Breeze

goshogun
Команда форума
Партнер клуба

kimisa

Новичок
Чего такого страшного в доп запросе к базе?
Как такового нет, если таких скриптов на кроне не становится много. Клиен скажет, а я хочу вот это и сажаем на крон. А теперь мне нужно вот это и снова сажаем на крон. В итоге имеем кучу скриптов, которые запускаются каждую минуту.
Самая настоящая очередь, где порядок отправления определеяется временем
Я это и имела в виду, просто не совсем правильно выразилась. Т.е. зависимость идет от времени.
 

kimisa

Новичок
Может, вам лучше вообще не работать? Просто получать деньги… ну, раз ничего делать не хотите?
Я писала, что я ничего не хочу делать? Я просто предотвратила дискуссии о том, что битрикс гавно.
Все хают и 1С, но вот самые требуемые и оплачиваемые именно они. Я не веду речь о Москве. Я веду речь про регионы. И еще это моя шабашка, а не основная работа.
P.S. Могу точно сказать, что битрикс еще не такое гавно. Но обсуждать этот момент я не хочу. Тема моего вопроса в этом не заключается.
P.S. А вопрос задаю, т.к. думала может еще есть то, что не знаешь. Ведь не зря говорят, что чем больше узнаешь, тем больше кажется что ты не знаешь )))
 

antson

Новичок
Партнер клуба
@kimisa, не хаем мы битрикс. Но вот, то , что вы сейчас хотите, не хотите, это очередной костыль вместо желания использовать механизмы разработчиков по расширению функционала.
Изначально там задумано, что админ сервака в случае необходимости кроновских задач, в кроне прописывает только одно правило . Каждую минуту вызывать /cron_events.php
А уж все остальные модули / расширения подрубаются / рулятся из админки битрикса.
 

michelle

Новичок
)) Битрикс прожорлив. Поэтому по возможности ищу способы меньше его задействовать.
Вам "шашечки или ехать"?
Вам подсказали правильное решение - делать средствами битрикс.

Ну а так .... можете сервак помощнее поставить, а не подстольный десктоп!
 
Сверху