Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: cron.php
Форумы портала PHP.SU » PHP » Программирование на PHP » cron.php

Страниц (1): [1]
 

1. Zuldek - 22 Декабря, 2010 - 15:11:02 - перейти к сообщению
написал скрипт для запуска по расписанию скрипт проверяет даты в базе и если дта больше текущей, меняет параметр активности акции на 0.

Но что-то мне подсказывает что решение далеко не самое изящное и есть более простые способы. Прошу посоветовать подобные, если они имеются.


CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  // Устанавливаем соединение с базой данных
  3.  require_once("config.php");
  4.  $currenttime=time();
  5.  $n=0;
  6.  $query = "Select share_starttime, share_endtime FROM shares";
  7.  if($shares = mysql_query($query)) {
  8.    while($share = mysql_fetch_array($shares))
  9.         {
  10.         $date_time_string = $share[share_endtime];
  11.         $dt_elements = explode(' ',$date_time_string);
  12.    $date_elements = explode('-',$dt_elements[0]);
  13.    $time_elements = explode(':',$dt_elements[1]);
  14.         $newtime= mktime($time_elements[0], $time_elements[1],$time_elements[2], $date_elements[1],$date_elements[2], $date_elements[0]);
  15.    //сравниваем UNIX-время с текущим, если текущее больше, убираем активность акции
  16.         if ($currenttime>$newtime) {
  17.         $update = mysql_query("UPDATE shares SET shares.share_active=0");
  18.                 if($update) echo "убрана в архив".$n++."акций";
  19.                 }
  20.         }
  21. }
  22. else echo "ошибка извлечения значений времени";
  23. ?>
  24.  
2. Мелкий - 22 Декабря, 2010 - 15:14:59 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE shares SET shares.share_active=0 WHERE share_endtime>CURRENT_TIMESTAMP


mysql_affected_rows, чтобы узнать, сколько изменилось.
3. Zuldek - 22 Декабря, 2010 - 21:00:00 - перейти к сообщению
Мелкий пишет:
CURRENT_TIMESTAMP

Благодарю. С одной стороны проще ибо не мучится с преобразованием даты-времени, а с другой, с этой функции ведь время по серверу, а у меня в бд пишется дата и время с пользовательской формы. Впрочем его можно не поленится и в серверное перевести Закатив глазки
4. Мелкий - 22 Декабря, 2010 - 21:13:37 - перейти к сообщению
Ну можете и не использовать CURRENT_TIMESTAMP, скормите вместо него запросу граничную дату в формате Y-m-d H:i:s (по версии аргумента date)
5. JustUserR - 22 Декабря, 2010 - 21:49:09 - перейти к сообщению
Zuldek пишет:
Но что-то мне подсказывает что решение далеко не самое изящное и есть более простые способы. Прошу посоветовать подобные, если они имеются.
В качестве возможной модификации для предполагаемого вами решения запуска PHP-скрипта производимого в системе CRON-планировщика допустима такая модификация - чтобы выполнение требуемых действий производилось в фоновом режиме обработки основного потока пользовательских HTTP-запросов - такая схема позволяет осуществлять процесс обслуживания web-сайта в соответсвии с реальным объемом производимых на нем действий

 

Powered by ExBB FM 1.0 RC1