Скрипт учета показов и кликов по баннеру

silmarion

Полезный
Регистрация
21 Июн 2012
Сообщения
194
Реакции
19
Всем привет
в общем задался таким вопросом, как правильно учитывать показ кликов и баннеров по баннерам на сайте.

Нашел вот такой вот скрипт

Код:
Скрипты показа баннеров, изложенные в этой статье довольно элементарны. Описания баннеров, количество кликов и показов хранится в текстовом файле, поэтому наличия MySQL не требуется.

Для начала создадим файл, в котором будем хранить всю информацию. Назовем его database.txt. Файл будет содержать записи следующего формата:
URL1|IMG1|NAME1|WH1|SHOW1|CL1
URL2|IMG2|NAME2|WH2|SHOW2|CL2
...
Где эти мистические слова означают следующее:
URL - ссылка баннера, куда будет переходить пользователь по клику;
IMG - имя файла изображения, которое будет выводится на экран;
NAME - alt-текст изображения;
WH - строка вида WIDTH=XX HEIGHT=XX, ширина и высота изображения; если все изображения одного размера, соответственно можно упростить скрипт;
SHOW - показы баннера, пишем изначально 0;
CL - клики по баннеру, пишем тоже 0;
Разделим логику на два файла. Один файл будет отвечать за показ баннера, назовем его banner_show.php, другой - за учет кликов по баннеру, назовем его banner_click.php. Пишем baner_show...
Сначала надо загрузить файл, в котором хранится описание баннеров:
<?
$array_bann = file ('database.txt');
Потом - инициализируем генератор псевдослучайных чисел, выбираем случайную запись из считанного файла, разделяем ее на элементы через признак "|" и заносим их в массив $data_bann.
srand((double)microtime()*1000000);
$pos = rand(0,sizeof($array_bann)-1);
$data_bann=explode ("|", $array_bann[$pos]);
Далее выводим на экран собственно сам баннер на основе данных из массива $data_bann;
echo "<a href=banner_click.php?banner=$pos target=_blank><IMG SRC='$data_bann[1]' ALT='$data_bann[2]' $data_bann[3] border=0></a>";
Увеличиваем счетчик показов баннера на единицу.
$data_bann[4]++;
Склеиваем измененную запись и записываем весь массив в файл;
$array_bann[$pos]=join('|',$data_bann);
$fp= fopen ('database.txt',"w");
flock($fp,3);
fwrite ($fp, join('',$array_bann));
fclose ($fp);
?>
Теперь займемся файлом banner_click.php. Открываем файл с данными.
<?
$array_bann = file ('database.txt');
В переменной $banner - у нас уже переданный из html-файла номер баннера, по которому кликнули. Берем запись, соответствующую этому номеру, опять разделяем ее на кусочки через "|" и заносим это в массив $data_bann.
$data_bann=explode ("|", $array_bann[$banner]);
Увеличиваем счетчик показов на единицу, склеиваем запись обратно в $array_bann.
$data_bann[5]=$data_bann[5]+1;
$array_bann[$banner]=join('|',$data_bann)."\n";
И записываем изменненный массив в файл database.txt.
$fp= fopen ('database.txt',"w");
flock($fp,3);
fwrite ($fp, join('',$array_bann));
fclose ($fp);
Отфутболиваем пользователя по адресу, хранящемуся в переменной $data_bann[0];
header("Location: http://$data_bann[0]");
?>
В заключение хочется добавить, что от накрутки кликов можно некоторым образом защитится, используя запись кукисов в одном скрипте и считывание их в другом.

В общем толком не работает, да и нужно мне не 1 рандомный баннер показывать, а нормально выводить баннера, и по их ID к примеру вести учет.

У кого есть что нормального по этой тематике?

В этом скрипте более-менее ведется учет лишь показов одного рандомного баннера из списка, с переходами что-то не так

Что я делаю не так, и что в этом скрипте нужно подправить, чтобы нормально выводить список баннеров, и вести нормальную статистику?
 
конкретно в этом много чего нужно править :)

сам использовал
Для просмотра ссылки Войди или Зарегистрируйся
достаточно мощный по функционалу бесплатный скрипт
 
Можете ли вы поделиться некоторыми из билинг плагините для paypal
Для просмотра ссылки Войди или Зарегистрируйся
 
Все зависит от нагрузки, самый простой вариант - использовать redis, 1 раз выгрузить все в память и брать баннеры оттуда, отдельный скрипт должен представлять собой пиксель - картинка 1x1 который ведет на скрипт учитывающий показы, с самого баннера бросать на скрипт учитывающий клик, который потом в свою очередь должен редиректить на страницу рекламы.
При больших нагрузках я б советовал использовать связку nginx+lua, а при очень больших - golang + fasthttp.

По поводу учета статистики, если данные будете хранить в mysql не пишите туда каждый клик а записывайте каждые к примеру 5 минут batch запросом либо используйте инкременты в redis
 
Последнее редактирование:
Все зависит от нагрузки, самый простой вариант - использовать redis, 1 раз выгрузить все в память и брать баннеры оттуда, отдельный скрипт должен представлять собой пиксель - картинка 1x1 который ведет на скрипт учитывающий показы, с самого баннера бросать на скрипт учитывающий клик, который потом в свою очередь должен редиректить на страницу рекламы.
При больших нагрузках я б советовал использовать связку nginx+lua, а при очень больших - golang + fasthttp.

По поводу учета статистики, если данные будете хранить в mysql не пишите туда каждый клик а записывайте каждые к примеру 5 минут batch запросом либо используйте инкременты в redis

Будет интерсно для меня, чтобы узнать о настрийките которые вы предлагаете.
1. Как настроить reidis для revive
2. Как установить и настроить nginx+lua для revive ad server
3. Как установить и настроить golang + fasthttp для revive ad server
 
Будет интерсно для меня, чтобы узнать о настрийките которые вы предлагаете.
1. Как настроить reidis для revive
2. Как установить и настроить nginx+lua для revive ad server
3. Как установить и настроить golang + fasthttp для revive ad server

Revive - это как я понимаю старый openx, лет 8 назад мы его так и не смогли нормально юзать он очч прожорлив, все что я написал касается самописной версии сервера. Я почитаю чуть позже доку, на предмет оптимизации может быть что то и поменялось и отпишу.
 
Revive - это как я понимаю старый openx, лет 8 назад мы его так и не смогли нормально юзать он очч прожорлив, все что я написал касается самописной версии сервера. Я почитаю чуть позже доку, на предмет оптимизации может быть что то и поменялось и отпишу.

Не умеет он из коробки тюнится для работы с redis
 
Не умеет он из коробки тюнится для работы с redis
Я работаю с redis я прошу плагин для redis для revive adserver. Я нашел его и его испробовал. Только от 2-3 дней изучаю revive-adserver и уже знаю почти все о нем. Это форум для помощи...
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху