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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: cron.php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Zuldek
Отправлено: 22 Декабря, 2010 - 15:11:02
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




написал скрипт для запуска по расписанию скрипт проверяет даты в базе и если дта больше текущей, меняет параметр активности акции на 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.  
 
 Top
Мелкий Супермодератор
Отправлено: 22 Декабря, 2010 - 15:14:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE shares SET shares.share_active=0 WHERE share_endtime>CURRENT_TIMESTAMP


mysql_affected_rows, чтобы узнать, сколько изменилось.

(Отредактировано автором: 22 Декабря, 2010 - 15:16:30)



-----
PostgreSQL DBA
 
 Top
Zuldek
Отправлено: 22 Декабря, 2010 - 21:00:00
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Мелкий пишет:
CURRENT_TIMESTAMP

Благодарю. С одной стороны проще ибо не мучится с преобразованием даты-времени, а с другой, с этой функции ведь время по серверу, а у меня в бд пишется дата и время с пользовательской формы. Впрочем его можно не поленится и в серверное перевести Закатив глазки
 
 Top
Мелкий Супермодератор
Отправлено: 22 Декабря, 2010 - 21:13:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ну можете и не использовать CURRENT_TIMESTAMP, скормите вместо него запросу граничную дату в формате Y-m-d H:i:s (по версии аргумента date)


-----
PostgreSQL DBA
 
 Top
JustUserR
Отправлено: 22 Декабря, 2010 - 21:49:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Zuldek пишет:
Но что-то мне подсказывает что решение далеко не самое изящное и есть более простые способы. Прошу посоветовать подобные, если они имеются.
В качестве возможной модификации для предполагаемого вами решения запуска PHP-скрипта производимого в системе CRON-планировщика допустима такая модификация - чтобы выполнение требуемых действий производилось в фоновом режиме обработки основного потока пользовательских HTTP-запросов - такая схема позволяет осуществлять процесс обслуживания web-сайта в соответсвии с реальным объемом производимых на нем действий


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB