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

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

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

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

Войти через TM ID
Похожие вопросы
Zaymigo Нижний Новгород
от 20 000 до 100 000 руб.
Devmasterz Тюмень
от 80 000 до 120 000 руб.
18 июля 2018, в 22:20
4000 руб./за проект
18 июля 2018, в 21:54
1000 руб./в час