Как лучше реализовать сателлит.

seosniks
На сайте с 13.08.2007
Offline
389
631

Добрый вечер. В общем хочу сделать сателлит.

Задача такая. сайт должен работать на файлах, не нагружать сильно систему и быстро открываться.

Варианты такие

1) с помощью header footer сделать шапку подвал.

инклюдить все файлы, которые будут html или же php/

2) делаем скрипт которые разбирает один файл

например файл забит новостьи. новость разбита так /

Для примера

<title>Название статьи</title>

<text>Текст статьи</text>

загружаем каждую новость с помощью

file(); ,  and  file_get_contens();

Затем выводим все на страницу.

3) создаем файл который будет разбирать новости из раздельных файлов.

для каждой новости свой файл. 500 новостей 500 файлов.

В общем интересует такой вопрос. Как лучше сделать, в плане быстродействия.

Предпочтение PHP.

Просто если делать с помощью инклюдов то как тогда вывести ссылки на 500 старниц.

Нужно на 1 странице выводить не более 10 20 превью новостей.

И еще если сделать один файл 500 новостей разить его метками и выводить на сайтке новости из него, или же создать 500 файлов. Как лучше. Просто мне кажется что 500 файлов будут весить больше да и загружать их дольше на хостинг.

Вариантов сделать скриптец масса, но хотел бы услышать советы бывалых.

В общем нужны Ваши советы. Спасибо всем за внимание..

artrozik
На сайте с 19.02.2008
Offline
180
#1

seosniks, а почему не посмотреть в сторону cms на файлах, типа кандидат. С панелью управления - легко и удобно. ИМХО, гораздо удобнее, чем самому все писать с нуля.

seosniks
На сайте с 13.08.2007
Offline
389
#2
artrozik:
seosniks, а почему не посмотреть в сторону cms на файлах, типа кандидат. С панелью управления - легко и удобно. ИМХО, гораздо удобнее, чем самому все писать с нуля.

Мне легче написать самому, так как во первых делаю так как удобно мне, во вторых могу доработать под себя, зная свой код. Ну и Свое есть свое. К тому же писанины там от силы на пол часа на час.

Мне просто хотелось знать как лучше загружать данные.

Похоже что массивом сразу через file будет лучше всего. Так как file_get_content будет все равно весь файл грузить а затем разбиать его. А с помощью массива можно сразу выбрать только нужные новости. Хотя в память один фиг все загружается, если ен ошибаюсь.

В общем завтра буду делать.

Хочу сделать скрипт который можно будет наполнять в автоматическом режиме. сразу хоть 100 сайтов в рандомном режиме..

weldpua2008
На сайте с 29.08.2010
Offline
111
#3
seosniks:
Добрый вечер. В общем хочу сделать сателлит.

Один что ли? Точно один?

seosniks:
загружаем каждую новость с помощью
file(); ,  and  file_get_contens();

Наф это?

seosniks:

Задача такая. сайт должен работать на файлах, не нагружать сильно систему и быстро открываться.

модное слово ЧПУ, нужен он Тебе?

Вариант 1. мой/свой алгоритм со smarty(Тэг {php} позволяет вставлять PHP-код прямо в шаблон на ум первый был) например.

Вариант 2. Использовать FrameWork

 cd /var/www/
vz-wel:/var/www# mkdir sattelite
vz-wel:/var/www# cd sattelite/
vz-wel:/var/www/sattelite# mkdir news

vim index.php

Просто вывод новостей, сколько б там не было :)

<?php

$news="news";
$files=scandir($news);

$n=count($files)-2;



if($n>0){
foreach($files as $file){
$path=$news."/".$file;
if(is_file($path)){
echo $path.":\n";
@include($path);
}
}

}else{
echo "Заглушка если нет новостей";

}
?>

php -q index.php

news/00000000001.txt:
Это новость!
news/00000000002.txt:
Новость 2

Вот это пример уже с поддержкой "страниц".

То есть Ты жмакаешь на example.com/?page=1 20 новостей,example.com/?page=2 - следующие 20-ть новостей

<?php

$news="news";
$files=scandir($news);
$n=count($files)-2;
$page=$_GET['page']; //текущая страница
$page=2; //Я в консоле, поэтому вручную выставил
$news_max=1; //максимальное количество новостей на странице
$current_news_n=0;
//$news_n=0;
if($n>0){

foreach($files as $file){

$path=$news."/".$file;

if(($current_news_n>=$news_max)){
break;
}elseif(($current_news_n<1)&&(($news_n+1)==$n)){
echo "Заглушка если нет новостей";

}else{
if(is_file($path)){
$news_n++;
if($news_n>=$page*$news_max){

$current_news_n++;
echo $path.":\n";
@include($path);
}
}

}
}

}
?>

vz-wel:/var/www/sattelite# php -q index.php

news/00000000002.txt:
Новость 2

weldpua2008 добавил 03-11-2010 в 15:08

Потестируем....

# cd news/
# for i in {1..500}; do echo 00$i> 00$i; done
# ls |wc -l
502


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</heead>

<?php

$news="news";
$files=scandir($news);
$n=count($files)-2;
$page=(int)$_GET['page'];
if(!($page>0)){
$news_max=$n-1;
echo $n;
$page=1;

}else{

$news_max=300;
}
$current_news_n=0;
//$news_n=0;
if($n>0){

foreach($files as $file){
// echo "$path current_news_n $current_news_n news_n $news_n news_max $news_max<br>";

$path=$news."/".$file;

if(($current_news_n>=$news_max)){
break;
}elseif(($current_news_n<1)&&(($news_n+1)==$n)){
echo "Zaglushka: Заглушка если нет новостей";

}else{
if(is_file($path)){
$news_n++;
if($news_n<=$page*$news_max){

$current_news_n++;
echo $path.":<br>\n";
@include($path);
}
}

}
}

}
?>

Поправил:

if($news_n<=$page*$news_max)
не нагружать сильно систему и быстро открываться

drupal+nginx

Requests per second:    0.87 [#/sec] (mean)

мой скрипт)))

Server Software:        nginx/0.6.32
Requests per second: 44.10 [#/sec] (mean)

ЗЫ:

Как видно - без базы очень хорошо живёт простой сателит...

Можно расширить функциональность - использовать bb-код, шаблоны, ЧПУ, показ отдельной статьи или же новости и т.д.

Хочу протестировать с фреймворком ))))

seosniks
На сайте с 13.08.2007
Offline
389
#4

Подскажите пожалуйста код которым замеряли

время. Хочу на своем скрипте потестить.

weldpua2008
На сайте с 29.08.2010
Offline
111
#5
seosniks:
Подскажите пожалуйста код которым замеряли
время. Хочу на своем скрипте потестить.

linux ab - в гугле посмотреть, утилита апача)))

А зачем?

ИМХО php - без базы, быстрее чем php+база (если ничего не предпринимать)...

Если что-то тормозит, тогда надо смотреть, что тормозит и "чинить"...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий