Stalker_RED, да это понятно.
Я не хочу гуглить.
Меня выбесил момент с датапикем и таймпикером.
Они баганые.
Хотя есть нормальный, с кучей фоловеров, но блин, по умолчанию не он был.
И так с кучей других компонентов в интернете. Есть куча всего, а что из этой кучи нормально хрен поймешь.
mShpakov, всяких css компонентов разных, конструктора чтоли, чтоб я не дизайнер и не верстальщик понакидывал их на страницы.
JS компонентов качественных, чтоб не искать среди кучи подобных один нормальный.
Я описал все, а вы зависли на уровне тяп ляп и в продакшн.
Если вы не хотите делать лучше и думать, то мне тут уговаривать вас нет смысла.
Я описал рабочий вариант архитектуры компонента. Гибкий, не связанный, разбитый на логические составляющие.
Копайтесь в своем болоте дальше. Типичный русский фриланс как на ладони.
У меня множество пользователей с множеством задач, получается крон будет каждые 10 минут переться в БД и делать выборку по всем событиям всех пользователей...
Все события в одной таблице.
Ну тогда в чем проблема?
1 раз в 10 минут заходите в БД и делаете выборку, где время отправки события меньше текущего и сообщение не было добавлено в очередь(новое) и добавляете в очередь.
Уже в очереди при отправке дергаете данные события и юзера, проверяете что все в силе и отправляете.
То есть крон единственное что делает - проверяет наличие Новых событий и добавляет их в очередь.
Таск в очереди сам разруливает проверку актуальности и сообщение при неудавшейся отправке и т.п.
Почему плохо делать как у вас.
Вы жестко завязываете работу приложения на другую софтину.
Если вы делаете для себя, то пофиг.
Если вы делаете заказ клиенту - вы поступаете подло.
Клиент не должен волноваться о том как работает ваше приложение.
Код и приложение должны быть так сделаны. Что если клиент завтра заплатит вам бабло и закроет контракт - другой разработчик должен без проблем разобраться в нем и начать работу.
Если клиент перенесет приложение на другой сервер и Beanstalkd вдруг будет багаться, нужно иметь возможность НЕ зависеть от сторонней софтины.
Я думаю вы слышали что код должен быть слабосвязанным. А вы делаете сильную связь на уровне ПО сервера. Этот пипец как ужасно, учитывая что можно сделать все через крон.
Rukis,
По архитектуре:
У вас есть компонент, отправка напоминания за какое-то время до события.
События, как я понял, у вас имеют разные типы и находятся по разным таблицам, но по сути есть общий интерфейс отправки сообщений.
У вас заведена таблица в БД, которая обобщает все ваши события?
Rukis, я могу только сказать, что вы не умеете строить архитектурные решения.
Вам нужно сменить место работы на более современную компанию, с сильным отделом разработки.
А щас вы пытаетесь костылить.
Как не дергать каждую секунду описал в первом сообщении, но вы даже не читаете.
Rukis, На половину вопросов выше ответил уже.
Как я понимаю вы не так давно в разработке.
Не надо говнокодить и притягивать за уши функциональность.
Просто напишите нормальную Крон задачу и используйте очереди в соответствии с рекомендациями документации.
Дмитрий Кузнецов, студии обычно ломят ценник за этот пунктик около 10К в месяц. Тоесть обнова выходит раз в пол года, и платят ежемесячно. И обновление обычно заключается в переделке версии в композере.
А потом если баги еще появляются, отдельный ценник)
Обычная практика студий, развод на бабки.
А есть https://github.com/Eonasdan/bootstrap-datetimepicker отличный и живой.