Показ баннера.

Тема в разделе "Как сделать...", создана пользователем KillDead, 10 фев 2008.

Статус темы:
Закрыта.
  1. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Мне нужно организовать показ баннера 1 раз в час, ровно на 1 минуту. Причём время должно всегда быть разным. Нужен совет, как это сделать:bc: . Мускул использовать нельзя. У меня есть идеи, но мне они кажутся не рациональными.
    У кого-нибудь есть мысли на этот счёт?:an:
     
  2. mentanos

    mentanos Постоялец

    Регистр.:
    27 дек 2007
    Сообщения:
    128
    Симпатии:
    35
    ты хочешь показывать баннер ЕЖЕЧАСНО в течение 1 МИНУТЫ, причем эта минута должна быть РАНДОМНОЙ минутой внутри конкретного часа. так? и если в данном часе "показательной" выбрана минута №29, то если никто не зайдет на сайт в течение этой минуты, баннер в данный час никому не будет показан?

    очень размытая постановка. уточни
     
  3. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Да, всё так.
     
  4. mentanos

    mentanos Постоялец

    Регистр.:
    27 дек 2007
    Сообщения:
    128
    Симпатии:
    35
    даже без записи файлов. touch - всему голова
    Код:
    <?
    define('TOUCH_HOUR','smart_banner.hour');
    define('TOUCH_MINUTE','smart_banner.minute');
    
    ######## setup ########
    if (!file_exists(TOUCH_HOUR)) {
    	touch(TOUCH_HOUR,time()-3600);
    }
    if (!file_exists(TOUCH_MINUTE)) {
    	touch(TOUCH_MINUTE);
    }
    #####################
    
    $t = time();
    $hour = (int)($t/3600);
    $hour_touch = (int)(filemtime(TOUCH_HOUR)/3600);
    if ($hour>$hour_touch) {
    	touch(TOUCH_HOUR);
    	touch(TOUCH_MINUTE,$hour*3600+rand(0,59)*60);
    	$hour_touch = $hour;
    }
    
    if ($hour==$hour_touch) {
    	$minute = (int)($t/60);
    	$minute_touch = (int)(filemtime(TOUCH_MINUTE)/60);
    	if ($minute==$minute_touch) {
    		echo 'banner';
    	}
    }
    ?>
    
     
    KillDead и Jeurey нравится это.
Статус темы:
Закрыта.