Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

PHP, SQL, SSI-Дневник ламера, превращающегося в ГУРУ :-) Буферизация вывода на экран


Информационный Канал Subscribe.Ru

s
Выпуск 13
 

Дневник ламера, превращающегося в гуру

 
 

Тема - Буферизация вывода на экран

 
 

Давно очень рассылка не выходила.
Занимался я в это время досборкой своего сайта: http://edu-rus.org
Также раскруткой и продвижением в поисковиках. И есть вполне хорошие результаты всего за один месяц:

ТИЦ ресурса - 130
По запросам в яндексе позиции:

воспитание детей - 4 место, частотность запроса в месяц - 9094
микроконтроллеры - 4 место, частотность запроса в месяц - 19966
курсы языка - 5 место, частотность запроса в месяц - 39800

Остальное: похудение, набор веса, бухгалтерские курсы пока слабовато, но это уже неважно, ибо будет и прийдёт со временем т.к. технология отработана. Самое главное - есть перспективы для роста, а точнее ПЕРВЫЕ места в серпе поисковиков :-)))

Но вы не надейтесь, про то, как это сделать я не расскажу, ибо два года, которые ушли на это - забесплатно не отдам 8-Р

Кстати частотность запросов можно посмотреть в Яндекс-Директе: http://wordstat.yandex.ru

Сегодня расскажу о решении немного другой задачи.
Изначально на всём сайте теги страницы:

<TITLE>@@@titlemsg@@@</TITLE>
<meta name="description" content="@@@descripttext@@@">
<META name="keywords" content="@@@keywordmsg@@@">
<META name="abstract" content="@@@abstractmsg@@@">

Были на всех страницах одинаковыми. Это мне непонравилось и я решил переделать немного движок. Проблема была в том, что такой функции было вообще не предусмотрено во первых, во вторых в шаблоне страницы данные из базы забирались где-то в середине, а надо было их выводить в самом начале. Но решение нашлось. Я откопал фуекцию вывода данных со страницы в буфер. Тоесть весь вывод, который на экран идёт - буферизируется и выдаётся только после того, как ВСЕ скрипты на шаблоне страницы отработались. Делается это достаточно простыми командами:

// Запускаем буферизацию вывода на экран
ob_start();
Команда скидывает всё, что должно выводиться на экран в буфер.

ob_end_flush();
Команда, которая чистит буфер и выводит всё его содержимое на экран. Тоесть в самом верху шаблона ставим: ob_start();

А в самом низу шаблона МОЖНО(но не нужно) ставить: ob_end_flush();

Или: ob_flush();
Сразу выдаёт на экран буфер и его чистит.

Не нужно потому, что у меня стояли другие задачи, а конкретно - выгрести содержимое буфера в переменную. Делается это командой: $tempvariable=ob_get_contents();
Тоесть содержимое буфера выгребаем в переменную: $tempvariable

ob_clean();
Затем этой командой чистим буфер. Не обязательно но так, на всякий случай.

Теперь само решение задачи.
У меня в переменной: $tempvariable есть полностью то, что должно быть выведено на экран командой:
echo $tempvariable;

но торопиться с этим не стоит, ибо основная задача не решена пока, а решается она просто. В начале вы видели, какие теги мне нужно было заполнить. Данные для заполнения извлекались из базы данных. Изначально там было ОДНО поле, под основной текст, но я расширил его функции и поле хранило также все данные по тегам. Делалось это просто, в таблицу добавлялась строка с символами разделителями, состоящая из нескольких сегментов. Выглядит это примерно так:
titlemsg RRRRR keywordmsg RRRRR <a href="http://edu-rus.org/index.php?modul=kurs&block=moder&kurs="><h1>headermsg</h1></a> RRRRR descripttext RRRRR abstractmsg RRRRR reserv1 RRRRR reserv2 RRRRR ОСНОВНОЙ ТЕКСТ

А сами данные извлекались из одной строки простой командой разбиения строки по кускам:
list($titlemsg,$keywordmsg,$headermsg,$descripttext,$abstractmsg,$arr6,$arr7,$bodymsg)=
split('RRRRR',textout($datainf['fullcomment']));
// Разбивает ОДНУ строку на части по символам разделителям. Тоесть:
$datainf['fullcomment']="<a href="http://edu-rus.org/index.php?modul=kurs&block=moder&kurs="><h1>headermsg</h1></a> RRRRR descripttext RRRRR abstractmsg RRRRR reserv1 RRRRR reserv2 RRRRR ОСНОВНОЙ ТЕКСТ";

И эту переменную ОДНУ, разбивают на 8 кусков. Далее всё элементарно. Если вы не забыли, весь массив вывода на экран находится в переменной и мы её обрабатываем так:

$tempvariable=ereg_replace('@@@titlemsg@@@',$titlemsg,$tempvariable);
$tempvariable=ereg_replace('@@@keywordmsg@@@',$keywordmsg,$tempvariable);
$tempvariable=ereg_replace('@@@headermsg@@@',$headermsg,$tempvariable);
$tempvariable=ereg_replace('@@@descripttext@@@',$descripttext,$tempvariable);
$tempvariable=ereg_replace('@@@abstractmsg@@@',$abstractmsg,$tempvariable);
// Переписываем данные в тегах (посмотрите в начале страницы) на извлечённые из базы переменные

echo $tempvariable;
// Выводим обработанную переменную "на экран".

И в общем всё. Кстати, загляните на сайт, может найдёте интересный для себя курс.
Самое лучшее помоему - это изучение микроконтроллеров, курсы бухгалтеров и сброс лишнего веса: дистанционное обучение

Если мне напишете сюда заявку: IrkutskProject/Аф-Аф/yandex.ru - рублей сто могу скинуть на курс :-)))

 
            Евсеев Евгений Александрович - (антигерой)
     

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.php1sql1ssi
Архив рассылки
Отписаться
Вспомнить пароль

В избранное