smolyakov770
@smolyakov770
Веб Дизайнер Верстальщик

Как сделать авто запись в базу?

Вопрос такой как сделать авто запись в базу?
Пробовал так)
$price = '1'; //Это процент скидки который должен начислиться
$date = date("d.m.Y"); // Текущая дата
$datastart = '14:11:2017'; // Это дата когда пользователь зарегистрировался
$datastop = '15:11:2017'; // Это дата когда нужно начислить процент
if ($timeout == $datastop) {
	$query ="UPDATE `test` SET `price` = `price` + '$price' LIMIT 1";
	$result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
}


И вот собственно вопрос как сделать что бы когда достигало переменной $datastop автоматически записывалось в базу не зависимо авторизован в данный момент пользователь или нет
  • Вопрос задан
  • 275 просмотров
Пригласить эксперта
Ответы на вопрос 4
alex-1917
@alex-1917
Если ответ помог, отметь решением
Запускайте ваш скрипт через настройки хостинга в панельке, ищите раздел CRON
Других автоматических вариантов нет, база не сидит и не проверяет дату или что-то еще, база ждет вашего обращения к ней и выдает что нужно (или не нужно))) ). Обращайтесь каждые 5 минут (например или даже более того - дико например)))) и будет вам счастье.
Ответ написан
Sassoft
@Sassoft
Yii developer
Делаете cli демона, там бесконечный цикл, sleep если нужно.
далее обарачиваете его в supervisord и запускаете процесс. Если он упадет то супервизор его перезапустит, все.
Ответ написан
@synapse_people
нельзя ли реализовать в базе поле initial_price, которое бы означало начальную стоимость и сделать функцию/метод на модели, которая бы сама высчитывала текущую стоимость в зависимости от прошедшего времени?
Ответ написан
Комментировать
@MadridianFox
Web-программист, многостаночник
В зависимости от деталей задачи в таких случаях используются два подхода, и оба уже описаны в других ответах.

Если расчёт (в вашем случае расчёт скидки) очень сложный и занимает много времени, а пользователь запрашивает результат много раз, то его надо рассчитывать один раз в какую-то дату. Для этого надо запустить отдельный процесс, который будет работать независимо от того - заходят ли пользователи на сайт или нет. Этот процесс должен периодически проходить по базе и обновлять в ней данные. Это то чего вы хотите.

Если расчёт не сложный, результат нужен нечасто, то можно считать его на лету. Главное выделить алгоритм, который зависит от начальных данных и прошедшего времени. Ну например - пусть скидка растёт на 1 процент каждый месяц. Тогда алгоритм будет такой: берём дату регистрации, берём текущую, считаем количество прошедших месяцев, проверяем чтобы оно не выходило за какой-то предел (не может же быть скидка больше 100%, да и 100% тоже, этот предел устанавливается бизнесом), ну и добавляем это число к начальной скидке.
Это то что вам надо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы