AntiKiller » 2008.08.02 00:11

Назрел такой вопрос... замедляют ли работу скрипта использование (частое) пользовательских функций? Точнее, как сильно замедляют?

Вот пример, часть типичной гостевой книги, MySQL, упрощённый вариант, без навигации:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$sql = mysql_query("SELECT (*) FROM `guest` ORDER BY `time` DESC ;");
while ($message_user = mysql_fetch_array($req))
{
switch ($message_user['sex'])
{
case "m":
echo '<img src="../images/m.gif" alt=""/>&nbsp;';
break;
case "zh":
echo '<img src="../images/f.gif" alt=""/>&nbsp;';
break;
}
switch ($message_user['level'])
{
case 1:
echo 'админ';
case 2:
/*и так далее выводим в зависимости от записи в базе определённую должность*/
}
}
AntiKiller » 2008.08.02 00:21

.....Будет проще для отображения статуса, пола, положения ONLINE/OFFLINE, аватара в конце концов создать функции, которые можно будет использовать и в форуме, в чате, в блогах...но сильно ли использование этих функций будет тормозить скрипт?...

Пример:


Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function GetStatus ($level)
{
$level = intval($level);
if ($level === 2) return " <span style=\"color:#EA6000\">[Модер]</span>";
elseif ($level === 6) return " <span style=\"color:#F23600\">[Старший модер]</span>";
elseif ($level === 7) return " <span style=\"color:red\">[Админ]</span>";
elseif ($level === 1) return " <span style=\"color:#84BB44\">[Киллер]</span>";
}
 
function GetSex ($sex)
{
$level = intval($level);
if ($level === 0) return " <span style=\"color:#000\">Мужик!</span>";
elseif ($level === 1) return " <span style=\"color:#f00\">Дама</span>";
}
$sql = mysql_query("SELECT (*) FROM `guest` ORDER BY `time` DESC ;");
while ($message_user = mysql_fetch_array($req))
{
echo GetSex ($message_user['sex'])
echo GetStatus ($message_user['level']) ;
}

Добавлено спустя   9 минут  34 секунды:
поправка: везде while ($message_user = mysql_fetch_array($sql)) а не while ($message_user = mysql_fetch_array($req))

---------------------------------------------------------------------

Вот ещё. Я смотред wapmod downloads, он целиком и полностью сделан на функциях... это и есть ООП?.. а то я не врублю))
Тот скрипт(wapmod downloads) я очень долго разбирал, пытался понять что к чему, я скрипт подобного типа видел впервые, но когда разобрался...мм его просто было удовольствием модернизировать и улучшать, я добавил туда возможность чтения .txt файлов, теперь его можно использовать и как библиотеку... но не в этом дело. Он довольно медленный. Медленный, хотя скриншоты берёт из "кэша"... это из-за того что большинство скрипта - функции? Но благодаря этим функциям появляется огроооомная функциональность(сорри за тавтологию)... и приходиться жертвовать скоростью, да?...

Gemorroj » 2008.08.02 03:38

нет, ООП это не функции, это - подход к программированию, образ мышления чтоли.
то, что ты называешь функцией, в ООП называется методом.
А вообще функции это потрясающая вещь, да, они работают медленне чем если бы просто писать функциями PHP (ООП работает еще медленней к слову).
Не забывай что большую роль в производительности играег грамотное построение БД и как следствие грамотное использование SQL запросов. Следует стараться избегать делать SQL запросы в циклах. А так же чаще использовать оператор LIMIT (если SELECT, то вообще всегда). Это я к тому, почему может тормозить, скажем, приведенный выше код. На счет wapmod_downloads я уже и не помню его кода, но тормоза совсем не обязательно могут быть от обилия пользовательских функций.

Но благодаря этим функциям появляется огроооомная функциональность(сорри за тавтологию)... и приходиться жертвовать скоростью, да?...

именно так) но чем больше будет становиться код, тем легче его будет модифицировать. ООП вроде бы еще дальше в этом направлении продвинулся... по крайней мере так многие утверждают. Я лично оч люблю имнно такой функциональный подход, а не ООП.

AntiKilеr » 2008.08.02 03:46

Спасибо за развернутый ответ:) А ты почему не напишешь собственную CMS?

Gemorroj » 2008.08.02 04:55

а зачем? я не хочу. а на данный момент и времени все равно уже нет.

endrju » 2008.08.02 16:39

Gemorroj написал:

а зачем? я не хочу. а на данный момент и времени все равно уже нет.

a кoдиш eщo?дa блин c чeвo нaчaть учить php?ну и cкoкa ты eвo нaпpимep учил?

Gemorroj » 2008.08.02 17:50

я сейчас из-за компа не вылазию. на том что заработаю в инете, на то и живу, поэтому сейчас занимаюсь только платными проектами.

AntiKiller » 2008.08.06 03:36

Учить нужно скачав 3 книжки по пыху и взяв в руки скрипт гостевой книги от Гига. Я во всяком случае так начинал учить

Gemorroj » 2008.08.06 11:10

У этой гости бага серьезная есть кстати. Там данные храняться разделенные символами ||| кажется, и используя их, при написаеии нового сообщения, можно, испортить БД.

AntiKiller » 2008.08.06 20:05

Разделяются ||
Этот знак экранируется знаком "!", точнее, заменяется им. str_replace ('|','!',$msg);
во всяком случае это в самой последней версии так

endrju » 2008.08.06 22:39

AntiKiller написал:

Учить нужно скачав 3 книжки по пыху и взяв в руки скрипт гостевой книги от Гига. Я во всяком случае так начинал учить

чo зa книжки?и чeм eтa гocтeвaя ocoбeннaя?

denich » 2008.08.07 15:26

идёш на books.ru и заказываешь себе книжку PHP5 в подлиннике
(очень полезная книжка "для начинающего" и нетолько)
прочитав эту 1000 страниц тебе уже многое будет понятно и даже сможеш что нить своё написать,
так же ковыряй скрипты,
так сказать, сам так делал/делаю)))

Gemorroj » 2008.08.07 19:28

Я сам сейчас иногда Котерова PHP5 иногда читаю, отличная книга. Жалко что в djvu 12 метров весит.

denich » 2008.08.07 20:45

м) у меня на компе она тож была)
сейчас другую начал читать) про MySql тож целый бестцеллер))) 1000 страниц