Система ротации баннеров

Тема в разделе "PHP программирование", создана пользователем Holger Dee Assuran, 15 мар 2007.

  1. Holger Dee Assuran

    Holger Dee Assuran Гость

    Идея такова - каждому сайту со временем необходима эффективная система ротации и управления баннерами. У меня есть набросок такой системы - общие идеи таковы:
    1. Файлы баннеров могут быть трех типов:
    1.1. Flash
    1.2. GIF
    1.3. HTML
    2. Все баннеры имеют набор данных:
    2.1. Указатель
    2.2. Заголовок
    2.3. Описание
    2.4. Адрес ссылки
    3. Для Flash-баннера может быть загружена GIF-заглушка
    4. Баннеры привязываются к местам на странице. При этом указываются:
    4.1. Место на странице
    4.2. Указатель баннера
    4.3. Дата начала показа
    4.4. Дата конца показа
    4.5. Процент показов
    4.6. Ограничение числа показов
    4.7. Ограничение числа кликов
    4.8. Число показов
    4.9. Число кликов
    Баннеры могут быть привязаны к нескольким местам на странице. Если баннер не привязан ни к одному месту - он не выводится.
    5. Каждый баннер может быть привязан к одной или нескольким страницам. При этом указываются:
    5.1. Указатель страницы
    5.2. Место на странице
    5.3. Указатель баннера
    5.4. Дата начала показа
    5.5. Дата конца показа
    5.6. Процент показов
    5.7. Ограничение числа показов
    5.8. Ограничение числа кликов
    5.9. Число показов
    5.10 Число кликов
    Эти значения полностью перекрывают ограничения связи с местом. Если баннер не привязан ни к одной странице - он выводится на всех страницах.

    Понадобится сценарий обеспечивающий загрузку, установки значений и привязки баннеров к местам и страницам. Так же понадобится функция вызываемая из кода страниц с передачей параметра означающего место баннера.
    1. Функция ищет в базе привязки баннеров, не привязанных к страницам, к месту на странице
    2. Ищет в базе привязки баннеров, привязанных к открытой странице, к месту на странице.
    3. Объединяет листы баннеров, перекрывая значения совпадающих элементов первого, значениями второго
    4. Перерасчитывает процент показов исходя из условий, что сумма значений процента показов в листе баннеров равна 100 и пропорции после перерасчета должны быть неизменны.
    5. Выбирает случайный баннер из листа. Выбор происходит с учетом пересчитанного процента показа.
    6. Выводит баннер, учитывая его тип.

    Во всей этой системе вроде-бы ничего сложного не наблюдается. Одна загвоздка - выбор случайного баннера с учетом процента показа.

    У меня есть одна идейка как это можно реализовать - мне не очень нравится, но сначала расскажу:
    1. Каждое место под баннер снабжается счетчиками "показы списка" и "показы баннера"
    2. Каждое место на конкретной странице снабжается такими же счетчиками, перекрывающими значения первых
    3. При каждой привязке нового баннера к месту и/или странице и при достижении нулевых значений счетчиками "показы списка" - их значение переустанавливается на 100
    4. При каждом показе баннера значения счетчиков уменьшаются. Баннеры со счетчиком показов равным 0 - исключаются.

    Минус этой идеи в том, что по началу она будет давать примерно одинаковое количество показов для всех баннеров списка. По мере уменьшения счетчиков файлы будут исключаться из обработки и со временем возникнет ситуация, когда все счетчики листа, кроме одного, пусты и на страницу выводится один и тот же баннер. И так до тех пор пока счетчик "показы листа" не достигнет 0 и показы листа не будут пересчитаны. После этого опять будут выводиться все баннеры листа в одинаковых пропорциях.

    Может у кого есть идеи как избавиться от этого лага? Или как учесть процент показа другим способом...

    ЗЫ: Я описывал кусочек этой идеи в теме "Выбор случайной строки из файла". Думаю тот пост можно убить.
     
  2. GOsha

    GOsha Гость

    <!--QuoteBegin-Holger Dee Assuran+15:03:2007, 18:34 -->
    <span class="vbquote">(Holger Dee Assuran @ 15:03:2007, 18:34 )</span><!--QuoteEBegin-->ЗЫ: Я описывал кусочек этой идеи в теме "Выбор случайной строки из файла". Думаю тот пост можно убить.
    [snapback]59159" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ага.. и все это на фалй насадить? Не проще на мускульную базу?
     
  3. Artexoid

    Artexoid Гость

    Для: Holger Dee Assuran

    Я немного не понял с этими процентами показа баннера. Если можно пожалуйста подробней что нужно сделать с этими процентами показа.

    А насчёт ситуации когда будет отображаться только один баннер, вот на ходу придумал решения подобной проблемы:

    А зачем вообще рандом? Почему бы просто не показывать их по очереди исключая их из показа сразу же? То есть Вывелся->исключился. После исключения последнего баннера включаются все и это всё повторяется вновь. Каждый раз после исключения последнего баннера (после полного прохода) можно инкрементировать некий счётчик, запоминая кол-во полных проходов списка. На основе этого счётчика можно еще что-нибудь выполнять. Единственный минус этого варианта - на каждом проходе баннеры показываются в строгой последовательности но в любом случае это лучше чем один и тот же баннер 10 раз подряд будет показан.

    Если так уж хочется рандом, опять же это можно предусмотреть для этого способа, осообенно легко если выборка идёт не из файла (если из файла то сложней), а из MySQL например.

    <!--QuoteBegin-GOsha @ 15.03.2007+ 19:09-->
    <span class="vbquote">(GOsha @ 15.03.2007 @ 19:09)</span><!--QuoteEBegin-->Ага.. и все это на фалй насадить? Не проще на мускульную базу?[/quote]GOsha, полностью с Вами согласен. Вообще давно пора отказаться от хранения информации в файлах, Куча ведь целая SQL баз которые использовать можно! Сейчас даже некоторые бесплатные хосты MySQL предоставляют :blink:!
     
  4. Holger Dee Assuran

    Holger Dee Assuran Гость

    Я, собственно, и имел в виду базу MySQL. Прошу прощения, что не сказал этого...
    Поясню.

    Допустим, после объединения списков, перерасчета процентов показа и исключения баннеров с нулевыми значениями, у нас остался примерно такой список:
    Код (Text):
    'Banner1.gif'->'40%';
    'Banner2.gif'->'25%';
    'Banner3.swf'->'25%';
    'Banner4.swf'->'10%';
    В результате первый баннер должен выводиться в 40%, второй - в 25%, третий - в 25% и четвертый в 10% случаев. Собственно именно это и обозначает процент показа.

    Еще один момент - чем болше посещений у ресурса, тем чаще переустанавливаются значения счетчиков "показы списка" и "показы баннера". Соответственно, чем болше посещаемость ресурса - тем менее заметен лаг с циклическим опустошением списка выводимых баннеров.
     
  5. GOsha

    GOsha Гость

    Короче народ идем на Red.BY и смотим на такую систему.
     
  6. Holger Dee Assuran

    Holger Dee Assuran Гость

    И чем мне поможет этот сайт? Я же не могу их код просмотреть. В баннерообмене участвовать не хочу.
    Интересно на сайте полноценную систему управления сделать.
     
  7. GOsha

    GOsha Гость

    Для: Holger Dee Assuran
    Скачай в нете и не парься.
    В гугле пишешь Скрипт Баннерообменной системы или Управление Баннерами.
    Получи пачку, и не говори, что все платные... Точнее платные, но можно и бесплатно найти.
     
  8. Holger Dee Assuran

    Holger Dee Assuran Гость

     
  9. katarios

    katarios Гость

     
  10. MajestiC

    MajestiC Гость

    А чем OpenAds не устраивает?
     
  11. katarios

    katarios Гость

    А что это за "система"?
     
Загрузка...
Похожие Темы - Система ротации баннеров
  1. WebWare Team
    Ответов:
    0
    Просмотров:
    197
  2. Rahmatov
    Ответов:
    17
    Просмотров:
    1.386
  3. akat
    Ответов:
    36
    Просмотров:
    2.073
  4. maxsexx
    Ответов:
    2
    Просмотров:
    1.175
  5. artemmech
    Ответов:
    4
    Просмотров:
    1.173

Поделиться этой страницей