Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
52 / 35 / 16
Регистрация: 03.08.2019
Сообщений: 389

Таймер в php

03.08.2019, 10:01. Показов 2323. Ответов 15

Студворк — интернет-сервис помощи студентам
Всем привет!
Уважаемые знатоки, помогите решить задачу.
Дано: цены, которые должны изменяться рандомом в заданный промежуток времени. пусть это время будет 1 час.
Пример:

$price1 = рандом(от 200 до 1000);
$price2 = рандом(от 200 до 5000);
$price3 = рандом(от 300 до 3000);
и т.д.
все эти цены должны меняться переодически. то есть раз в определенный промежуток времени.

Конечно, есть js и setinterval)
Вопрос: если использовать js, то как тогда дать понять php, что товар нужно продать по данным из js.. как это реализовать?
Или как реализовать тот самый таймер на php?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.08.2019, 10:01
Ответы с готовыми решениями:

Таймер php
Привет всем! Проблема: у меня ест таймер. Надо поставить так чтобы у таймера был интервал 3 дня. Я так понял это устанавливается где то в...

Таймер в php
Часть кода из учебного пособия. Во втором и третьем цикле for реализован таймер в 1 секунду. function test($func) { ...

Таймер php
Здравствуйте. Как сделать перенаправление на другую страницу при истечении 10 сек. Знаю что необходимо делать на javascript, но у...

15
Невнимательный
 Аватар для ft4l
2840 / 1268 / 358
Регистрация: 08.02.2013
Сообщений: 7,391
Записей в блоге: 2
03.08.2019, 10:33
Как вариант, можно хранить где-то на сервере эти данные $price1, $price2, $price3 вместе с временем последнего изменения.
//текстовой файл, база данных ...
При каждом запросе данных сверять время последней перезаписи,
обновлять сохранённое если истекло время, и отдавать текущие значения

// для именно "раз в определенный промежуток времени." нужен какой-то демон, типа cron

Добавлено через 2 минуты
Цитата Сообщение от ft4l Посмотреть сообщение
вместе с временем
В случае с файлом, можно просто использовать время модификации файла

Добавлено через 3 минуты
Цитата Сообщение от Fantom1987 Посмотреть сообщение
js, то как тогда дать понять php
Передавая в запросе текущие данные, с учётом того что можно подделать запрос к серверу

Добавлено через 7 минут
Цитата Сообщение от ft4l Посмотреть сообщение
время модификации файла
Хотя нет клиент передаёт время получения им цен, сервер сравнивает время с последними актуальными промежутками, в которые изменялись цены, и считает что на клиенте именно такие цены как цены одного из сохранённых периодов
0
52 / 35 / 16
Регистрация: 03.08.2019
Сообщений: 389
03.08.2019, 10:47  [ТС]
Еще один нюанс. эти цены мне нужно показать пользователям - вывести на экран.
Пляшем дальше) можно с помощью ajax внести эти данные в БД? если да, то как? какой то примерный кусок кода. потом уже плясать с данными с БД через php.
0
Невнимательный
 Аватар для ft4l
2840 / 1268 / 358
Регистрация: 08.02.2013
Сообщений: 7,391
Записей в блоге: 2
03.08.2019, 11:24
Насчёт ajax я затрудняюсь отвечать вообще .)
так-то вроде просто на примерах, типа как https://www.w3schools.com/js/js_json_php.asp
// типа как там где пример PHP Method = POST соответственно с другими данными и другим запросом
Но на практике, последними браузерами в которых я что-то пробовал запускать были IE6 Opera9 ... .)
работоспособность под вопросом

Цитата Сообщение от Fantom1987 Посмотреть сообщение
потом уже плясать с данными с БД через php.
Это скорее первично, php-скрипт получает запрос, от кого/чего неизвестно, какие данные туда подсунули неизвестно.
Он должен адекватно понять соответствуют-ли данные тому что некий клиент отправлял их видя нужные корректные значения.
Возможно даже нужно переспросить пользователя клиента, записать что-то в сессию,
перед тем как что-то применять.
0
52 / 35 / 16
Регистрация: 03.08.2019
Сообщений: 389
03.08.2019, 12:12  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
типа как там где пример PHP Method = POST соответственно с другими данными и другим запросом
все было бы хорошо если бы не сплошные Но. я уже начитался как передать все это дело постом или гетом - не вариант)

беда-печаль.. в php не додумались сделать функцию таймера. а вы ломайте теперь голову, взрывайте мозг и думайте как сделать
0
 Аватар для alexsamos33
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122
04.08.2019, 10:36
В смысле не додумались?! time() Есть такая функция! Бери и при каждом запросе выщитывай разницу! Всё!
0
Невнимательный
 Аватар для ft4l
2840 / 1268 / 358
Регистрация: 08.02.2013
Сообщений: 7,391
Записей в блоге: 2
04.08.2019, 10:52
Цитата Сообщение от alexsamos33 Посмотреть сообщение
time()
это понятно . Но если зрить в корень,) как я думаю
1. данные должны периодически изменяться на сервере
2. клиент не должен подсовывать левые данные, которые не соответствуют текущим или как-минимум не было до последнего изменения
// Двойная буферизация , я-бы назвал... как минимум
3. с момента как пользователь отправил на сервер подтверждение выбора, сверенные данные, если он подтвердит корректность, уже неизменны.
// Ещё один буфер.

////
http это просто протокол передачи сообщений, запрос/ответ
http-сервер просто получает запрос отсылает ответ, и дальше как-то проводит своё свободное время.

real-time требует постоянных соединений сервера с клиентами. Но тоже с поправками на интервалы между временем получения данных и временем отправки.

c ajax максимум можно сделать отправку запросов и получение ответов по таймеру
0
52 / 35 / 16
Регистрация: 03.08.2019
Сообщений: 389
04.08.2019, 17:55  [ТС]
Цитата Сообщение от alexsamos33 Посмотреть сообщение
В смысле не додумались?! time() Есть такая функция! Бери и при каждом запросе выщитывай разницу! Всё!
если не трудно напиши, пожалуйста, пример кода как реализовать такое.
0
 Аватар для alexsamos33
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122
04.08.2019, 17:57
Цитата Сообщение от Fantom1987 Посмотреть сообщение
если не трудно напиши, пожалуйста, пример кода как реализовать такое.
Вот, держи. Проверял, запускал, работает.
PHP
1
2
3
4
5
6
7
8
9
10
11
$filename = "random.txt";
if(file_exists($filename)){ /* если файл уже существует */
    $diff = time() - @filemtime($filename);
    if($diff > 5 * 60) { /* через пять минут */
        file_put_contents($filename, rand(111, 999)); /* обновляем файл */
    }
} else { /* если нет */
    file_put_contents($filename, rand(111, 999)); /* создаём файл */
}
 
echo file_get_contents($filename); /* вывод  */
1
52 / 35 / 16
Регистрация: 03.08.2019
Сообщений: 389
04.08.2019, 17:58  [ТС]
Вообщем эту проблему я решил)
Может кому пригодится)
на вооружение взял ПДО
создал отдельный файл, где подключился к базе и написал парочку запросов.
данный файл закинул на обработку в планировщик openserver и поставил нужный интервал.
в итоге нужные мне цены, которые в обработанном рандомом виде были благополучно отправленные в нужное место в базе, а потом выведены оттуда на экран))) при обновлении страницы не меняются! пока не придет время отработать выше указанного файла.
Ссылка как подключить все в планировщике OS:
http://pechenek.net/instrument... hp-skript/
0
Невнимательный
 Аватар для ft4l
2840 / 1268 / 358
Регистрация: 08.02.2013
Сообщений: 7,391
Записей в блоге: 2
04.08.2019, 18:00
Цитата Сообщение от Fantom1987 Посмотреть сообщение
при обновлении страницы не меняются!
как если во время чтения ответа сервера данные на сервере изменились,
и на клиенте ещё старые данные а на сервере уже новые ?
Или это не важно, или клиент ничего не отправляет на сервер основываясь на полученном?
0
52 / 35 / 16
Регистрация: 03.08.2019
Сообщений: 389
04.08.2019, 19:06  [ТС]
в качестве теста:
Цена за - Пшеница равна 2743 $$$
Цена за - Ячмень равна 3099 $$$
Цена за - Кукуруза равна 1705 $$$
Цена за - Горох равна 3780 $$$
перекопал доки по пдо - паутина мама не горюй. запутался.
Ребят, подскажите, возможно ли отделаться одним запросом в БД и все эти числа раскидать по разным переменным? а не отправлять такое же количество запросов
0
Невнимательный
 Аватар для ft4l
2840 / 1268 / 358
Регистрация: 08.02.2013
Сообщений: 7,391
Записей в блоге: 2
04.08.2019, 19:24
MySQL
1
2
SELECT `Цена за - Пшеница`,`Цена за - Ячмень`,`Цена за - Кукуруза`,`Цена за - Горох` FROM `Цены`
 ORDER BY `ВремяДобавления` DESC LIMIT 1

Они в одной таблице? много там записей? Имена и тип данных полей можно посмотреть например так
MySQL
1
SHOW CREATE TABLE `какНазывается`;
0
52 / 35 / 16
Регистрация: 03.08.2019
Сообщений: 389
04.08.2019, 19:54  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
Они в одной таблице? много там записей? Имена и тип данных полей можно посмотреть например так
добраться до этих значений я могу
$sql = "SELECT * FROM price";

$query = $connect->query($sql) or die("failed!");
while ($result = $query->fetch(PDO::FETCH_ASSOC)) {
echo ' равна ' . $result['cost'] . ' $$$ <br>';
}
но при попытке запустить другой какой то цикл чтобы записать куда мне надо получаю либо ошибки, либо бесконечный цикл
Миниатюры
Таймер в php  
0
Невнимательный
 Аватар для ft4l
2840 / 1268 / 358
Регистрация: 08.02.2013
Сообщений: 7,391
Записей в блоге: 2
04.08.2019, 21:47
Цитата Сообщение от Fantom1987 Посмотреть сообщение
другой какой то цикл
Можно без цикла
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$sql = "SELECT `val`, `cost` FROM price";
/*foreach ($connect->query($sql) as $row) {
    print $row['val'] . "\t";
    print $row['cost'] . "\n";
}*/
$res = $connect->query($sql) or die("failed!");
 
//$rows = $res->fetchAll(PDO::FETCH_ASSOC);
//echo '<pre>'. print_r($rows, 1) .'<pre>';
 
$rows = $res->fetchAll(PDO::FETCH_NUM);
echo '<pre>'. print_r($rows, 1) .'<pre>';
Цитата Сообщение от Fantom1987 Посмотреть сообщение
записать
PHP
1
2
3
4
5
6
7
8
$sql = "REPLACE INTO price (val, cost) VALUES
    ('Пшеница', CEIL(RAND()*2700)+300),
    ('Ячмень', CEIL(RAND()*4700)+300),
    ('Кукуруза', CEIL(RAND()*2800)+200),
    ('Горох', CEIL(RAND()*4700)+300)";
 
$count = $connect->exec($sql) or die("failed!");
echo $count .' рядов обновлено';
Вроде по идее как-то так должно работать, у Вас вроде val уникальное поле
//если правильно догадался от скольки до скольки цисла
Вариант с INSERT .... ON DUPLICATE KEY UPDATE как-то не осилил представить с одним запросом

Добавлено через 7 минут
имя таблицы поправил

Добавлено через 11 минут
Цитата Сообщение от ft4l Посмотреть сообщение
UPDATE как-то не осилил представить
в документации есть что-то типа этого
"INSERT INTO price (val, cost) VALUES
('Пшеница', CEIL(RAND()*2700)+300),
('Ячмень', CEIL(RAND()*4700)+300),
('Кукуруза', CEIL(RAND()*2800)+200),
('Горох', CEIL(RAND()*4700)+300)
ON DUPLICATE KEY UPDATE cost=VALUES(cost)";

Но сомневаюсь и неначем/некогда проверять
1
52 / 35 / 16
Регистрация: 03.08.2019
Сообщений: 389
05.08.2019, 00:52  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
Можно без цикла
как говорится все гениальное должно быть просто)
2 строки кода:
$stmt = $pdo->query("SELECT cost FROM price")->fetchAll(PDO::FETCH_COLUMN);

list($d, $c, $p, $s) = $stmt;
=================
echo '<br>' . $s . '<br>';
echo '<br>' . $p . '<br>';
echo '<br>' . $c . '<br>';
echo '<br>' . $d . '<br>';
и все цифры в разных переменных)

выборка с базы:
Пшеница => 3786 $
Ячмень => 4376 $
Кукуруза => 2696 $
Горох => 1861 $
а это те самые циферки:
1861

2696

4376

3786
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.08.2019, 00:52
Помогаю со студенческими работами здесь

Таймер php
Здравствуйте, как сделать таймер на php чтобы он выполнял действие каждый час и при подключении показывал сколько секунд осталось

Таймер на PHP
Мне нужен таймер например 10 мин(выводить в браузере обратный отчет), по истечении времени нужно записать в файл &quot;1&quot; (при каждом...

Таймер PHP
Нужен таймер , который будет возобновлять запрос через Х-секунд , к примеру функция выполнила запрос , через Х-секунд снова и так по...

Таймер на PHP
Здравствуйте, возникла проблема. Мне нужен чистый таймер на PHP в коде, который по прохождению интервала будет исполнять код, например...

Таймер в php
У меня вопрос, можно ли в php через определенное время вызывать нужную функцию? Добавлено через 46 минут UP! UP! UP!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru