Forum Webscript.Ru
Программирование => PHP => Тема начата: Yourock от 12 Сентября 2005, 21:49:04
-
Интересует такая вещь: зависит ли скорость работы сайта от количества страниц, т.е. есть ли разница - разбивать код на несколько страниц или все толкать в одну?
Например, есть "менеджер новостей", где модератор может добавлять, редактировать и т.д. Я всегда стараюсь все писать в одном файле (допустим news.php).
Целесообразно ли это с точки зрения скорости работы сайта?
Или лучше делать несколько страниц (типа news_show.php, news_add.php, news_edit.php)?
-
Думаю, в твоем случае врядли есть разница.
вообще, если каждый из модулей несет свою смысловую нагрузку стоит разбить на части ради стройности системы. Если кода мноооого (ну очень много!), то твои процессы займут меньше памяти если код разбит на отдельные модули, запускаемые в разных случаях.
мое мнение
-
Yourock
ты ищешь оптимизацию кода не там, где надо.
оптимизировать надо то, что реально тормозит, а не там, где тебе буйная фантазия подсказывает.
об оптимизации тут речь вообще не может идти.
только об удобстве разработки.
несколько страниц (типа news_show.php, news_add.php, news_edit.php) - делать ОЧЕНЬ неудобно.
особенно - если учесть, что news_add.php и news_edit.php - это практически один и тот же скрипт.
вот пример простого и компактного кода, раклизующего основной функционал БД - форма + таблица.
Всё росто и компактно
mysql_connect();
mysql_select_db("new");
$table="test";
if($_SERVER[\'REQUEST_METHOD\']==\'POST\') {
if ($id=intval($_POST[\'id\'])) {
$query="UPDATE $table SET name=\'".mysql_real_escape_string($_POST[\'name\'])."\' WHERE id=$id";
} else {
$query="INSERT INTO $table SET name=\'".mysql_real_escape_string($_POST[\'name\'])."\'";
}
mysql_query($query);
header("Location: http://".$_SERVER[\'HTTP_HOST\'].$_SERVER[\'PHP_SELF\']);
exit;
}
if (!isset($_GET[\'id\'])) {
$LIST=array();
$query="SELECT * FROM $table";
$res=mysql_query($query);
while($row=mysql_fetch_assoc($res)) $LIST[]=$row;
include \'list.php\';
} else {
if ($id=intval($_GET[\'id\'])) {
$query="SELECT * FROM $table WHERE id=$id";
$res=mysql_query($query);
$row=mysql_fetch_assoc($res);
foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v);
} else {
$row[\'name\']=\'\';
$row[\'id\']=0;
}
include \'form.php\';
}
?>
form.php
list.php
Add item
foreach ($LIST as $row): ?>
- ">=$row[\'name\']?>
endforeach ?>
-
RomikChef, так я и так почти так делаю, как у тебя написано (имхо, код у тебя мудренный какой-то - разве нельзя было обойтись одним пэхапэшным файлом ;) )
Чисто спортивного интереса ради спросил :)
Просто я все делаю через функции в одном файле. А порой доходит дело и до 15-20 функций и пока весь листинг просмотришь, голова кругом идет :) Хотя все, что до 400-500 строк кода - терпимо...
-
хахаха! =)
Yourock:
имхо, код у тебя мудренный
при том, что строк в нём - 20, и НИ ОДНОЙ функции, а у тебя - 400 и 20 функций =)))
сделать в одном файле можно.
и ничего мудрёного нет в том, чтобы добавить эти куски в основной файл. Можешь так и сделать.
Когда же ты узнаешь про шаблоны, то поймёшь, что код не мудрёный, а наоборот, гораздо проще.
-
RomikChef:
news_show.php, news_add.php, news_edit.php
ИМХО news_show.php - это совсем другое, в отличие от news_add.php, news_edit.php. По опыту говорю.
Если последние 2 "модуля" работают с постом, и там нужно лишь флаг типа in_base = (true|false) за собой таскать ($_POST[\'id\'] в коде Ромика), то news_show.php у меня лично всегда не тольео занимается выводом списка, но и обладает кучей функий сортировки, поиска, удаления новостей. Содержать это всё в одном файле было бы неудобно...
-
совершенно верно.
если код разрастается, то его - для удобства, и ничего больше - можно вынести в отдельный файл.
-
Если идет что-то общее во всех файлах то нет смысл это дублировать.
Особенно это принесет много неудобств при внесении изменений.