Вы не зашли.
Главная »
PHP » Использование пользовательских функций
Назрел такой вопрос... замедляют ли работу скрипта использование (частое) пользовательских функций? Точнее, как сильно замедляют?
Вот пример, часть типичной гостевой книги, MySQL, упрощённый вариант, без навигации:
Код:
$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=""/> '; |
break; |
case "zh": |
echo '<img src="../images/f.gif" alt=""/> '; |
break; |
} |
switch ($message_user['level']) |
{ |
case 1: |
echo 'админ'; |
case 2: |
/*и так далее выводим в зависимости от записи в базе определённую должность*/ |
} |
} |
.....Будет проще для отображения статуса, пола, положения ONLINE/OFFLINE, аватара в конце концов создать функции, которые можно будет использовать и в форуме, в чате, в блогах...но сильно ли использование этих функций будет тормозить скрипт?...
Пример:
Код:
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 файлов, теперь его можно использовать и как библиотеку... но не в этом дело. Он довольно медленный. Медленный, хотя скриншоты берёт из "кэша"... это из-за того что большинство скрипта - функции? Но благодаря этим функциям появляется огроооомная функциональность(сорри за тавтологию)... и приходиться жертвовать скоростью, да?...
нет, ООП это не функции, это -
подход к программированию, образ мышления чтоли.
то, что ты называешь функцией, в ООП называется методом.
А вообще функции это потрясающая вещь, да, они работают медленне чем если бы просто писать функциями PHP (ООП работает еще медленней к слову).
Не забывай что большую роль в производительности играег грамотное построение БД и как следствие грамотное использование SQL запросов. Следует стараться избегать делать SQL запросы в циклах. А так же чаще использовать оператор
LIMIT (если SELECT, то вообще всегда). Это я к тому, почему может тормозить, скажем, приведенный выше код. На счет wapmod_downloads я уже и не помню его кода, но тормоза совсем не обязательно могут быть от обилия пользовательских функций.
Но благодаря этим функциям появляется огроооомная функциональность(сорри за тавтологию)... и приходиться жертвовать скоростью, да?...
именно так) но чем больше будет становиться код, тем легче его будет модифицировать. ООП вроде бы еще дальше в этом направлении продвинулся... по крайней мере так многие утверждают. Я лично оч люблю имнно такой функциональный подход, а не ООП.
#4.
AntiKilеr
Гость
2008.08.02 03:03
Спасибо за развернутый ответ
А ты почему не напишешь собственную CMS?
а зачем? я не хочу. а на данный момент и времени все равно уже нет.
Gemorroj написал:
а зачем? я не хочу. а на данный момент и времени все равно уже нет.
a кoдиш eщo?дa блин c чeвo нaчaть учить php?ну и cкoкa ты eвo нaпpимep учил?
ТA НУ ЩO Я ТУТ НAПИШУ
я сейчас из-за компа не вылазию. на том что заработаю в инете, на то и живу, поэтому сейчас занимаюсь только платными проектами.
Учить нужно скачав 3 книжки по пыху и взяв в руки скрипт гостевой книги от Гига. Я во всяком случае так начинал учить
У этой гости бага серьезная есть кстати. Там данные храняться разделенные символами
||| кажется, и используя их, при написаеии нового сообщения, можно, испортить БД.
Разделяются ||
Этот знак экранируется знаком "!", точнее, заменяется им. str_replace ('|','!',$msg);
во всяком случае это в самой последней версии так