|
|
|
| Задача заключается в том что необходимо изменить данные таблицы MySQL через определенное время. То есть клиент делает запрос в 14.00 запрос MySQL( "UPDATE table SET user = '1' WHERE id = '$id'") срабатывает к примеру в 14.30. В том смысле что значение user станет равным 1 только в 14.30. Есть вариант использовать функции времени php, но в этом случаи если произойдет restart сервера то запрос так и не будет выполнен. Есть идеи? Заранее благодарю! | |
|
|
|
|
|
|
|
для: Lors
(09.02.2009 в 02:19)
| | Как вариант, вставлять значение + временная метка в другую таблицу и уже из неё переносить в основную при достижении определённого времени.
А можно вместо UPDATE использовать всегда INSERT и всё ту же временную метку, а просроченные значения удалять... принцип работы с сессионными переменными.
Я думаю вариантов больше чем два, недостаточно информации. | |
|
|
|
|
|
|
|
для: Valick
(09.02.2009 в 06:39)
| | Описанный вами метод, как я понимаю подразумевает значительную нагрузку на сервер? | |
|
|
|
|
|
|
|
для: Lors
(09.02.2009 в 15:20)
| | Я же сказал, информации недостаточно... какие могут быть советы....
Вы сказали что надо сделать, но не сказали зачем...
Я лично не вижу в своих словах особой нагрузки на сервер;) | |
|
|
|
|
|
|
|
для: Valick
(09.02.2009 в 06:39)
| | Вы имеете виду тип MySQL timestamp? Я относительно недавно в web-программирование еще не сталкивался с работой данного типа и мне не знаком механизм. Опишите пожалуйста поподробнее.. | |
|
|
|
|
|
|
|
для: Lors
(09.02.2009 в 02:19)
| | Вам явно нужно, мягко говоря, не то, что Вы описываете.
Даже используя функции php, Вы такого поведения не добьетесь. К счастью. | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2009 в 09:58)
| | Я тоже склонен предполагать, что запрос нужно сделать сразу, а результат отображать спустя время.. ну возможно есть еще какие то пути? | |
|
|
|
|
|
|
|
для: Lors
(09.02.2009 в 15:23)
| | Вообще-то любой сервер стремится к тому, чтоб запросы исполнять как можно более быстро.
Может всё же не сразу надо делать запрос, а именно тогда, когда хочется увидеть нужный результат? | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2009 в 15:48)
| | Именно. Получается, что необходимо перезапустить скрипт через 30 минут, код будет выглядит примерно так:
<?php
$sql_query_pr = "SELECT * FROM table WHERE id='$id'";
$pr = mysql_query($sql_query_pr) or die(mysql_error());
$mas_pr = mysql_fetch_array($pr);
$cur_time_s = time();
$end_time_s = $cur_time_s + 1800;
if ($mas_pr['end_time1'] < $cur_time_s)
{
$query1 = "UPDATE table SET begin_time1 = '$cur_time_s' WHERE id = '$id'";
$query2 = "UPDATE table SET end_time1 = '$end_time_s' WHERE id = '$id'";
mysql_query (@$query1, $dbcnx);
mysql_query (@$query2, $dbcnx);
}
?>
|
Насколько я понимаю это единственный возможный вариант? И даже тут надо использовать сторонние программы, например - какой нибудь планировщик задач, в который можно через скрипт php вбивать значения времени запуска php кода. Кто может посоветовать такую программу? У кого есть альтернативные идеи? | |
|
|
|
|
|
|
|
для: Lors
(10.02.2009 в 10:23)
| | > И даже тут надо использовать сторонние программы, например - какой нибудь планировщик задач, в который можно через скрипт php вбивать значения времени запуска php кода.
Наконец.
>Кто может посоветовать такую программу?
http://softtime.ru/forum/srch.php?id_forum=6&name=cron&srchwhere=2&id_forum=1&logic=1
Еще в MySQL 5.1 появился планировщик событий http://dev.mysql.com/doc/refman/5.1/en/events.html
Если есть доступ к созданию событий и хранимых процедур, можно использовать его.
>У кого есть альтернативные идеи?
Либо (если ни cron ни webcron ни mysql sheduler недоступны) придется запускать этот фрагмент в начале каждого значимого скрипта. | |
|
|
|
|
|
|
|
для: Trianon
(10.02.2009 в 11:02)
| | Спасибо ;) | |
|
|
|