alexandr_kulik
Новичок
Больше всего напрягает дергать SQL но хранить задачи кроме него пока не вижу лучшего варианта
Да что мешает демоном "спать" и слушать сокет, как только происходит добавление данных в бд, посылать в сокет команду, что бы демон сделал запрос к бд, можно вообще сразу время этой записи отсылать (оно же заранее известно при создании записи в бд), что бы демон при необходимости откорректировал время своего "сна".Больше всего напрягает дергать SQL но хранить задачи кроме него пока не вижу лучшего варианта
а что значит спать если слушаем?что мешает демоном "спать" и слушать сокет
а это кто "посылает", и как отловить "добавление"?как только происходит добавление данных в бд, посылать в сокет команду
ну в понимании демона "спать" (я даже специально в кавычках написал это слово) - это ничего не делать и лупиться на сокет (слушать сокет в бесконечном цикле)а что значит спать если слушаем?
"хороший вопрос"...а это кто "посылает", и как отловить "добавление"?
хм, а что тогда значит "не спать"это ничего не делать и лупиться на сокет (слушать сокет в бесконечном цикле)
это изменение всех мест где происходит создание задачи. это дополнительная сложность, (а если сервер отвалится?),что мешает сразу после INSERT сделать fsockopen?
Если у тебя не оплата за CPU по факту, то не страшно, база даже от одного запроса в 10ms даже не вздрогнет. Главное, что бы был индекс и его использование.ну пользователь пришел сделал несколько запросов ушел, а демон то постоянно будет крутить 24/7 каждые 3-5 секунды, вот это беспокоит
Запрос не сложный выполняется быстро поля по каким проверки индексированы JOIN нет, смущает просто очень часто и много запросов, по сути то коннект будет один от демона, но вот что много, по этому и хочу знать мнение специалистов или кто делал подобное что лучше использовать в таком случаеЗаметил что у большинства пхп программистов 2 крайности - или вообще не лезем в базу ибо страшно и вдруг затормозит или на каждый чих лезем в базу с монстроидальными запросами по типу база все стерпит... Почему нельзя адекватно оценивать инструмент (БД) когда и как нормлаьно его использовать.
@alexandr_kulik Ничего плохого в одном запросе к базе нет (да даже в нескольких), чтобы это был быстрый и легкий запрос. И даже когда запрос тяжелый, ничего страшного при условии что разработчик точно понимает насколько тяжелый этот запрос и как он может затормозить работу сайта.
да это крутой наверное, нужно сокеты поучить с этим пока темный лес не сталкивался ((Да что мешает демоном "спать" и слушать сокет, как только происходит добавление данных в бд, посылать в сокет команду, что бы демон сделал запрос к бд, можно вообще сразу время этой записи отсылать (оно же заранее известно при создании записи в бд), что бы демон при необходимости откорректировал время своего "сна".
ну спим по запросам к БД а мониторим каждые 3-5 сек файл на изменения.а что значит спать если слушаем?
а это кто "посылает", и как отловить "добавление"?
Да это кажется оптимально, только нужно по сокетам подучить, может есть под рукой хороший мануал по сокетам, понимаю гугл в помощь так и буду искать, но если есть под рукой проверенный нормальный и понятный мануал, то спасибону в понимании демона "спать" (я даже специально в кавычках написал это слово) - это ничего не делать и лупиться на сокет (слушать сокет в бесконечном цикле)
"хороший вопрос"...
а как вообще данные попадают в БД? я не исключаю возможность добавления данных в БД по средствам чёрной магии, но чаще всего это обычный скрипт содержащий запрос к БД, что мешает сразу после INSERT сделать fsockopen?
Если сервер отвалился демона supervisord перезапустит и тот снова с базы считает все данные найдет ближайшее когда нужно выполнить и до этого времени не будет дергать базу, а будет дергать файл по времени изменения, если ничего по файлу не менялось то базу не дергаем и ждем ближайшую задачу, если файл изменился то делаем запрос в базу и снова делает пересчет на ближайшую задачу.хм, а что тогда значит "не спать"
это изменение всех мест где происходит создание задачи. это дополнительная сложность, (а если сервер отвалится?),
профита я пока не вижу (да и смысла нет, задачу только завтра выполнять)
сервере VPS 3ГБ оперативы задания потом с базы ставятся в очередь GearmandЕсли у тебя не оплата за CPU по факту, то не страшно, база даже от одного запроса в 10ms даже не вздрогнет. Главное, что бы был индекс и его использование.
Если прям хочется спец решение, то пробуй сервера очередей с отложенными заданиями, типа beanstalkd
Но поверь, там под капотом все-равно какой-то цикл спрятан.
Если у тебя не оплата за CPU по факту
Смотря какие запросы. Фуллсканы на таблицу с миллионами записей вряд лиНормальная база отлично отработает 100 запросов в секунду на дешевом VPS.
а ты отвечаешь2. Сколько событий происходит в секунду?
У тебя "Задания ставит человек". Когда наступает момент, что какое-то задание надо выполнить - это называется словом "событие". Сколько у тебя всего заданий в сумме - 100, 10 тысяч, миллион?2. В демоне каждые 3-5 секунд запрос к базе
Представь себе, даже тут можно обделаться, имея хорошую фантазию. Я сам удивился, когда увидел.@fixxxer Проектировать с умом что? Запросы на проверку новых записей в таблице? Уровень сложности - "select 1 from table where status='new' and execute_at < now() limit 1".