• Главная
  • » PHP
  • » Использование пользовательских функций

#1 2008.08.02 00:11

AntiKiller
Участник
Откуда: Россия
Зарегистрирован: 2008.08.01
Сообщений: 13
Карма: 0
Профиль Веб-сайт

Использование пользовательских функций

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

Вот пример, часть типичной гостевой книги, 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:
/*и так далее выводим в зависимости от записи в базе определённую должность*/
}
}

Неактивен

#2 2008.08.02 00:21

AntiKiller
Участник
Откуда: Россия
Зарегистрирован: 2008.08.01
Сообщений: 13
Карма: 0
Профиль Веб-сайт

Re: Использование пользовательских функций

.....Будет проще для отображения статуса, пола, положения 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 файлов, теперь его можно использовать и как библиотеку... но не в этом дело. Он довольно медленный. Медленный, хотя скриншоты берёт из "кэша"... это из-за того что большинство скрипта - функции? Но благодаря этим функциям появляется огроооомная функциональность(сорри за тавтологию)... и приходиться жертвовать скоростью, да?...

Неактивен

#3 2008.08.02 03:38

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Использование пользовательских функций

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

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

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

Активен

#4 2008.08.02 03:46

AntiKilеr
Гость

Re: Использование пользовательских функций

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

#5 2008.08.02 04:55

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Использование пользовательских функций

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

Активен

#6 2008.08.02 16:39

endrju
Участник
Откуда: UKRAIN
Зарегистрирован: 2008.08.01
Сообщений: 52
Карма: 0
Профиль Веб-сайт

Re: Использование пользовательских функций

Gemorroj написал:

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

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


ТA НУ ЩO Я ТУТ НAПИШУ

Неактивен

#7 2008.08.02 17:50

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Использование пользовательских функций

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

Активен

#8 2008.08.06 03:36

AntiKiller
Участник
Откуда: Россия
Зарегистрирован: 2008.08.01
Сообщений: 13
Карма: 0
Профиль Веб-сайт

Re: Использование пользовательских функций

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

Неактивен

#9 2008.08.06 11:10

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Использование пользовательских функций

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

Активен

#10 2008.08.06 20:05

AntiKiller
Участник
Откуда: Россия
Зарегистрирован: 2008.08.01
Сообщений: 13
Карма: 0
Профиль Веб-сайт

Re: Использование пользовательских функций

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

Неактивен

  • Главная
  • » PHP
  • » Использование пользовательских функций

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.011 s