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 автоматически записывалось в базу не зависимо авторизован в данный момент пользователь или нет
  • Вопрос задан
  • 272 просмотра
Пригласить эксперта
Ответы на вопрос 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
Похожие вопросы
Amigoweb Магнитогорск
от 40 000 до 60 000 руб.
Roonyx Ростов-на-Дону
от 50 000 до 100 000 руб.
Ultimate Guitar Калининград
от 1 000 до 3 000 usd.
21 окт. 2018, в 17:05
5000 руб./за проект
21 окт. 2018, в 16:38
50000 руб./за проект