Forum Webscript.Ru

Программирование => PHP => Тема начата: Yourock от 12 Сентября 2005, 21:49:04

Название: Оптимизация кода или что-то типа этого...
Отправлено: Yourock от 12 Сентября 2005, 21:49:04
Интересует такая вещь: зависит ли скорость работы сайта от количества страниц, т.е. есть ли разница - разбивать код на несколько страниц или все толкать в одну?
Например, есть "менеджер новостей", где модератор может добавлять, редактировать и т.д. Я всегда стараюсь все писать в одном файле (допустим news.php).
Целесообразно ли это с точки зрения скорости работы сайта?
Или лучше делать несколько страниц (типа news_show.php, news_add.php, news_edit.php)?
Название: Оптимизация кода или что-то типа этого...
Отправлено: unclebob от 13 Сентября 2005, 00:22:15
Думаю, в твоем случае врядли есть разница.

вообще, если каждый из модулей несет свою смысловую нагрузку стоит разбить на части ради стройности системы. Если кода мноооого (ну очень много!), то твои процессы займут меньше памяти если код разбит на отдельные модули, запускаемые в разных случаях.

мое мнение
Название: Оптимизация кода или что-то типа этого...
Отправлено: Меняздесьдавнонет от 13 Сентября 2005, 02:37:27
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

">

">


Return to the list


list.php
Add item

  • ">


  • Название: Оптимизация кода или что-то типа этого...
    Отправлено: Yourock от 13 Сентября 2005, 05:01:17
    RomikChef, так я и так почти так делаю, как у тебя написано (имхо, код у тебя мудренный какой-то - разве нельзя было обойтись одним пэхапэшным файлом ;) )
    Чисто спортивного интереса ради спросил :)
    Просто я все делаю через функции в одном файле. А порой доходит дело и до 15-20 функций и пока весь листинг просмотришь, голова кругом идет :) Хотя все, что до 400-500 строк кода - терпимо...
    Название: Оптимизация кода или что-то типа этого...
    Отправлено: Меняздесьдавнонет от 13 Сентября 2005, 10:09:17
    хахаха! =)
    Цитировать
    Yourock:
    имхо, код у тебя мудренный

    при том, что строк в нём  - 20, и НИ ОДНОЙ функции, а у тебя - 400 и 20 функций =)))

    сделать в одном файле можно.
    и ничего мудрёного нет в том, чтобы добавить эти куски в основной файл. Можешь так и сделать.
    Когда же ты узнаешь про шаблоны, то поймёшь, что код не мудрёный, а наоборот, гораздо проще.
    Название: Оптимизация кода или что-то типа этого...
    Отправлено: Алексей от 13 Сентября 2005, 11:16:16
    Цитировать
    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 у меня лично всегда не тольео занимается выводом списка, но и обладает кучей функий сортировки, поиска, удаления новостей. Содержать это всё в одном файле было бы неудобно...
    Название: Оптимизация кода или что-то типа этого...
    Отправлено: Меняздесьдавнонет от 13 Сентября 2005, 12:50:11
    совершенно верно.
    если код разрастается, то его - для удобства, и ничего больше - можно вынести в отдельный файл.
    Название: Оптимизация кода или что-то типа этого...
    Отправлено: AlieN от 14 Сентября 2005, 21:53:59
    Если идет что-то общее во всех файлах то нет смысл это дублировать.
    Особенно это принесет много неудобств при  внесении изменений.