У меня есть 100-150 строк данных в моей базе данных SQL, используемых в веб-сайте / приложении PHP.
Каждый элемент в строках базы данных представляет «товарное предложение». Каждое предложение имеет несколько основных свойств, статус действия и срок действия.
Поскольку каждое предложение указано на веб-странице, часы будут отсчитывать время до истечения указанного срока. Если к моменту истечения срока действия предложение имеет статус «Действителен», статус предложения должен будет измениться на «Истек». Кроме того, потребуется выполнение некоторых других функций PHP (они отправляют транзакционные электронные письма и обновляют списки наблюдения для пользователей)
Таймер восстановления, который я использую, может вызвать обратный вызов при обратном отсчете до указанной даты истечения. Это может вызвать команду AJAX, чтобы обновить статус достоверности предложений и сделать все, что мне потребуется. Однако, если у меня есть 100 человек, просматривающих страницу предложений, это вызовет 100 событий при обратном вызове, и если на моей странице никого нет, событие вообще не сработает. Так что это не жизнеспособное решение.
Я рассматривал задания CRON, но я понимаю, что они часто выполняются не более одной минуты, опять же, это не подходит, так как срок действия предложений истекает с точностью до секунды.
Как сайты, такие как ebay, обновляют свою информацию о списках для тысяч строк данных в день, когда вторые элементы достигают своего конечного времени?
Есть ли примеры наилучшей практики для минимизации нагрузки на сервер?
У меня есть 100-150 строк данных в моей базе данных SQL, используемых в веб-сайте / приложении PHP.
Каждый элемент в строках базы данных представляет «товарное предложение». Каждое предложение имеет несколько основных свойств, статус действия и срок действия.
Поскольку каждое предложение указано на веб-странице, часы будут отсчитывать время до истечения указанного срока. Если к моменту истечения срока действия предложение имеет статус «Действителен», статус предложения должен будет измениться на «Истек». Кроме того, потребуется выполнение некоторых других функций PHP (они отправляют транзакционные электронные письма и обновляют списки наблюдения для пользователей)
Таймер восстановления, который я использую, может вызвать обратный вызов при обратном отсчете до указанной даты истечения. Это может вызвать команду AJAX, чтобы обновить статус достоверности предложений и сделать все, что мне потребуется. Однако, если у меня есть 100 человек, просматривающих страницу предложений, это вызовет 100 событий при обратном вызове, и если на моей странице никого нет, событие вообще не сработает. Так что это не жизнеспособное решение.
Я рассматривал задания CRON, но я понимаю, что они часто выполняются не более одной минуты, опять же, это не подходит, так как срок действия предложений истекает с точностью до секунды.
Как сайты, такие как ebay, обновляют свою информацию о списках для тысяч строк данных в день, когда вторые элементы достигают своего конечного времени?
Есть ли примеры наилучшей практики для минимизации нагрузки на сервер?
Лучший вариант сделать это в два этапа.
Удалите событие AJAX. Выполните проверку с помощью ajax: например, когда истекает время таймера (на ajax), они отключают кнопку покупки или другую необходимую задачу.
На веб-сервере сделайте две вещи: во-первых, используйте cron или подобное, чтобы истечь каждую минуту. Во-вторых, при попытке «покупки» (если ваша страница является магазином), проверьте, действительно ли запрошенное предложение уже действует.
Это лучший подход, который вы можете использовать.