Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Простейший ротатор баннеров на php
Новая тема
Ответить
цитата
04/11/12 в 16:38
Nikso
Господа профи пхп программирования прошу совета. Сам я в пыхе не бельмеса. Вот позанимался аппликацией скрипта из
этого топика
под свои нужды.
создал файлы
banner.txt
descr.txt
title.txt
url.txt
данные в каждом синхронизированные. т.е. первая строка это баннер, деска, тайтл и урл одного спонсора, вторая другого и т.д.
создал файл rotate.php с содержимым
Код:
<?php
$filename = "/usr/home/bebe/public_html/banner.txt";
$banner = file($filename);
$filename = "/usr/home/bebe/public_html/descr.txt";
$descr = file($filename);
$filename = "/usr/home/bebe/public_html/title.txt";
$title = file($filename);
$filename = "/usr/home/bebe/public_html/url.txt";
$url = file($filename);
$out = array_rand($banner, 4);
?>
В php темплейте сиджа делаю инклюд ротатора
<?php include_once ('/usr/home/bebe/public_html/rotate.php'); ?>
Далее в нужных местах вставляю таблицу
Код:
<table class=ads>
<tr align=center>
<td width="25%"><a href="<?=$url[$out[0]]?>"><?=$title[$out[0]]?></a></td>
<td width="25%"><a href="<?=$url[$out[1]]?>"><?=$title[$out[1]]?></a></td>
<td width="25%"><a href="<?=$url[$out[2]]?>"><?=$title[$out[2]]?></a></td>
<td width="25%"><a href="<?=$url[$out[3]]?>"><?=$title[$out[3]]?></a></td>
</tr>
<tr align=center>
<td><a href="<?=$url[$out[0]]?>"><img src="<?=$banner[$out[0]]?>"></a></td>
<td><a href="<?=$url[$out[1]]?>"><img src="<?=$banner[$out[1]]?>"></a></td>
<td><a href="<?=$url[$out[2]]?>"><img src="<?=$banner[$out[2]]?>"></a></td>
<td><a href="<?=$url[$out[3]]?>"><img src="<?=$banner[$out[3]]?>"></a></td>
</tr>
<tr align=center>
<td><?=$descr[$out[0]]?></td>
<td><?=$descr[$out[1]]?></td>
<td><?=$descr[$out[2]]?></td>
<td><?=$descr[$out[3]]?></td>
</tr>
</table>
В общем то все работает.
Но как это сказывается на нагрузке на сервер, скорость отдачи главной страницы?
ведь при каждой загрузке дергается 5 файлов - 4 текстовки и 1 пхп.
А может быть я вообще нагородил фигни и все можно реализовать более оптимально?
цитата
04/11/12 в 18:02
pipez
если у тебя файлы не по гигу скрипт не сложнее "Hello world!". вместо файлов можно массивы в самом скрипте создать
цитата
04/11/12 в 18:34
johndoe2
Если эта вставочка станет задерживать "отдачу главной страницы", ты должен будешь возблагодарить своих богов, которые послали тебе такой трафик и такие горы спонсоров.
По коду - проще не придумаешь. И, таки да, "более оптимально" можно. Можно все данные бросить в один csv файл. А можно закинуть все данные в одну таблицу sqlite и данные извлекать по индексу, не читая целиком всё сразу.
П/С/ Первое слово прочёл как "ГосподИ"
цитата
04/11/12 в 20:51
Doctor
я ни в коем разе не профи, но главный тут гимор имхо в синхронизации, чтобы не напутать что с чем вяжется...))) если интересно поковыряться дальше самому и не париться с синхронизацией, то лучше сделать в одном файле data.txt все необходимое через "|" к примеру (banner|descr|title|url) и потом через такую конструкцию все читать из него
$contents=file("data.txt");
for ($i=0;$i<count($contents);$i++) {
list($banner,$descr,$title,$url)=explode("|",$contents[$i]);
}
цитата
05/11/12 в 05:48
Nikso
Хорошо, когда будет много трафа тогда поковыряю sqlite
Doctor:
Да вот это более интересно. Я не знал как распарсить строку на переменные.
не сразу догадался что массив в цикле не создается
Получилось так:
Код:
<?php
$contents = file("data.txt");
$title = array();
$descr = array();
$url = array();
$banner = array();
for ($i=0;$i<count($contents);$i++) {
list($t,$d,$u,$b)=explode("|",$contents[$i]);
$title[] = $t;
$descr[] = $d;
$url[] = $u;
$banner[] = $b;
}
$out = array_rand($contents, 4);
?>
цитата
05/11/12 в 06:35
Nikso
хм, а интересный пхп язык. Cократил и тоже работает. Привык на дельфях все заранее обьявлять
Код:
<?php
$contents = file("data.txt");
for ($i=0;$i<count($contents);$i++) {
list($title[],$descr[],$url[],$banner[])=explode("|",$contents[$i]);
}
$out = array_rand($contents, 4);
?>
цитата
06/11/12 в 05:48
Евпатий
такой скрипт проще написать на паскале, какой смысл нагружать всё это на php?
Новая тема
Ответить
Эта страница в полной версии