Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Внесите ясность


Автор: Predator199 12.12.2012, 18:48
Бегаю туда, сюда. 
Есть список серверов, постр навигация все информеры и тп. По началу я писал циклы и тд,  в 1 скрипте. Потом для удобства решил циклы  и тп перенести в функции(отдельный скрипт). После чего разделял, переписывал. Решил посмотреть на скорость выполнения скрипта. Разницу не могу установить, в среднем 03 сек. Щас вновь перенес, то есть все в 1 скрипте без всяких функции передач массивов (переменных).
Только постраничную навигацию сделал через функцию, она мне нужнa не для одного списка.
 Кто знает и испытал на себе, скажите как лучше.По мне так сразу писать и не передавать туда суда переменные, массивы (как я понимаю, так еще и озу затрагивает больше)

Еще вопрос.
Поставил с самого начала смарти. Теперь не понимаю для чего я его поставил.  Он по-моему как то помогает кешировать страницы пользователю, но ведь браузер тоже кеширует их. Посмотрел содержание файлов, папки templates_c. Никаких плюсов не увидел. 
 Если я его уберу, будит ли хуже?

Автор: Arantir 12.12.2012, 20:24
От разделения по файлам скорость не снижается. Скорость снижается от кривого кода. В том числе, если это кривое разделение по файлам.
Больше ОЗУ? У вас переменные по мегабайту? Если да - надо явно что-то менять. Если нет - страница генерируется доли секунды. Даже если там чуть больше памяти понадобится, это вам погоды не сделает.
Если бы все экономили на спичках, то такие вещи как ООП никогда бы не появилось.

Одни с быстрейших фреймворков - это структуры из десятков (сотен) файлов, многие из которых всегда задействуются при каждом запросе.

Цитата(Predator199 @  12.12.2012,  17:48 Найти цитируемый пост)
Он по-моему как то помогает кешировать страницы пользователю, но ведь браузер тоже кеширует их.
Попробуйте определить разницу между кешированием на сервере и кешированием у пользователя. Зачем кеш в браузере? Может причина сродни причине кеша на сервере?


Predator199, практическая каждая ваша тема является очень абстрактным описанием ваших проблем. Вы часто пишите такие цифры, на подобии 30 тыс. сайтов, 100 тыс. IP.... Может стоит нанять какого-то специалиста себе? Если вы серьезно собираетесь содержать столь крупный проект, детали которого тут иногда упоминаете, и при этом имеете столь много вопросов, то один лишь форум вам во всем этом деле не поможет.

Автор: Predator199 12.12.2012, 21:31
Код я стараюсь писать правильно, не один раз переписывал. 
Без конца. Бегаю ,читаю, пытаюсь сделать лучше и все ни как не могу остановиться. 
Я собираюсь удалить смарти, зачем нагружать сайт. Скажите пожалуйста для чего он мне, в чем плюс для меня будит?

Автор: Arantir 12.12.2012, 21:59
А вы уверены, что не нагрузите сайт больше, если будете все там писать сами без фреймворка?

Автор: Predator199 12.12.2012, 22:22
Ну не знаю... Зачем подгружать шаблон через смарти, когда проще и быстрей вывести (без всяких шаблонов) на прямую из php скрипта в браузер. 
Поизучаю про это еще. Спс.

Автор: Predator199 13.12.2012, 09:29
Убрал шаблонизатор, результат:
Потребление озу снизилось с 1.95mb до 810кб.
Время выполнения скрипта 1,8-2.0 сек.
Шаблонизатор вовсе не нужен,  смарти это огромный ненужный код.

Автор: Aliance 13.12.2012, 10:13
Цитата(Predator199 @  13.12.2012,  10:29 Найти цитируемый пост)
Время выполнения скрипта 1,8-2.0 сек.

 smile  smile  smile 

Автор: Predator199 13.12.2012, 10:42
Ой, не так=)
0.018-0.020 smile 

Автор: Guedda 13.12.2012, 11:33
Цитата(Predator199 @  12.12.2012,  19:48 Найти цитируемый пост)
Поставил с самого начала смарти. Теперь не понимаю для чего я его поставил.

Ну на всякий случай поставь тогда все доступные в сети библиотеки. Я тебе советую, как и многие выше - программирование - это не твое. Найми специалиста.
Тебе вроде уже 18 лет (на сколько я умею пользоваться гуглом). Может, пока не поздно, выберешь другую специальность?

Автор: Predator199 13.12.2012, 14:17
Автомеханик моя специальность=). Зачем все ставить, одной хватит smile . Программированием увлекаюсь только потому что мне интересно.
В гугле у каждого свое мнение.На форуме более точно узнаешь.

Автор: Arantir 13.12.2012, 15:08
Ничего себе увлечение. Тысячи серверов,  тысячи посетителей, сотни тысяч ip...
Как если бы программист попытался отремонтировать истребитель.
Больше похоже на попытку срубить деньжат =) Да, в наши дни это совсем не сложно, особенно в интернете.
Ну никто вам не судья, но самому все содержать без опыта в этой сфере может оказаться непосильным. Ладно бы еще программист сам крупный проект делал. Но вот так на пустом месте замок не выстроить.
Впрочем, если вы будете успешно с этого получать неплохие деньги, то какая вам будет разница что тут люди говорят, правда?

Автор: Predator199 13.12.2012, 16:00
Ну как сказать. Сперва так интересно было html писать и смотреть то что сделал. Далее надоел ucoz после 2 мес, перешел на постор cms. Не прошло и 3-х месяцев, как надоело пользоваться готовым.
По началу делал не ради денег, а ради того :
-В первую очередь ради интереса и увлечения
-Ради того ,чтоб занять себя чем то в свободное время.
-Создать такой проект где будит постоянное общение. Увлечение (заинтересованность) в тематике сайта.
-Мне интересно смотреть на мою работу, интересно развивать. 
-Еще большее стремление дает то, когда знаешь и сможешь делать то что хочешь.
В принципе я и щас делаю не ради денег, а ради знаний (выше перечисленного).  Cделать то чего нет в нете, или хотя б сделать более быструю и мощную систему. Постоянно стремиться и делать лучше чем у других(в пане быстроты и оптимизации). 
Когда в нете сотни таких проектов и среди этих сотен продвигать свой, постоянно с кем то соперничать.
 Ну разве не интересно?
Я учусь на своих ошибках  smile . В будущем не попаду в яму.

Автор: baldina 13.12.2012, 16:33
Цитата(Predator199 @  13.12.2012,  16:00 Найти цитируемый пост)
Я учусь на своих ошибках

Predator199, все же поменьше надо думать об оптимизации, больше - об архитектуре проекта.
профессиональное программирование отличается от дилетантского вовсе не фенечками и производительностью, а масштабом: размер проекта, время жизни, число изменений. когда этого много, на первый план выходит удобство сопровождения.
с другой стороны, грамотная архитектура обычно рождает хорошие продукты, в т.ч.  с точки зрения производительности.
ну и наконец, относительно web вообще и php в частности: есть различные методы повышения производительности, не связанные напрямую с устройством серверного скрипта, среди которых основной подход - кеширование (фронт-сервер типа ngnix, memcached, кэширование байткода).
например, если используется кэширование байткода, разница в исполнении плоского скрипта и скрипта с функциями крайне незначительна. а если используется кэш готовых страниц, то все еще быстрее и менее зависимо от скрипта. и т.д.
плюс распределение нагрузки, но для этого архитектура проекта должна быть на это рассчитана.
так что архитектура много важнее локальной оптимизации.

Автор: Arantir 13.12.2012, 20:01
Цитата(Predator199 @  13.12.2012,  15:00 Найти цитируемый пост)
Cделать то чего нет в нете, или хотя б сделать более быструю и мощную систему.
Простая истина: чтобы сделать что-то новое, нужно знать все старое.
Вы сейчас изобретаете велосипед. Причем не очень хорошо.

Программирование - это не знание языка программирования. Это способ мышления. 
Вы можете себе представить, каким образом был придуман бинарный алгоритм поиска? Он ведь совершенно не удобен для использования человеком. Делить пополам и сравнивать быстрее, чем пересматривать по очереди, может только компьютер. И тот, кто придумал алгоритм, прекрасно это понимал.

Вам нужно не на форумах лазить, а умные книжки читать. Есть целая куча очень толковых книг по программированию. Причем не по какому-то языку, а по программированию в целом - по алгоритмам, шаблонам, концепциям и подходам. Сходите в ближайшую библиотеку и возьмите =)
А язык программирования - это мелочь, просто инструмент. Язык только реализует в себе уже существующие принципы, а не порождает их. Зная эти принципы выучить сам язык не представляется чем-то сложным.

 Не начинайте строить дом без фундамента. Если сейчас создадите себе неправильное понимание сути того, что делаете, то ничего путнего потом не получится.

Автор: Predator199 14.12.2012, 23:26
Раз решил не использовать шаблонизаторы. Возникла мысль. Если пользователь обновляет чаще 3 раз в секунду, тогда создать кеш в котором бут храниться тот html код страницы. Закрываем часть скрипта , отдаем код с кеша.  Активность продолжается с выше 3 мин, признать досом и блокировать фаерволом. Бред?

Автор: Arantir 15.12.2012, 00:12
А если раз в 4 секунды, то кеш не создавать?
А если 1000 пользователей одновременно на сайте и каждый каждые 10 сек грузит какую-то страницу?

Во всех нормальных фреймворках все шаблоны кешируются в построенном состоянии. То есть одна страница - это один целый файл, со всеми уже включенными в него подшаблонами и т.п. И при выводе получается парсинг только одного файла.

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

Просто надо грамотно уменьшить количество любых лишних операций. Например, проверять только дату файлов, которые должны бы были быть задействованы для шаблона. Проверка даты - не ресурсоемкая операция. Если дата не менялась, то выдавать кеш.
То же для шаблонов в БД. Сделать таблицу-лог изменений. Один запрос покажет, стоить ли грузить шаблоны из БД или они и так актуальны в локальном кеше.

Автор: Predator199 15.12.2012, 07:38
Спс

Автор: Sentox 17.12.2012, 09:02
Всё зависит от первоначальных требований и выбор фреймворка ой как не всегда правильный выбор. Подключение файлов и их обработка для high load системы это так же очень важный фактор, так как работа на физическом уровне считается одним из важных бутылочных горлышек в оптимизации. На то в фреймворках и кэшей много, что много универсализации. 
Ещё раз, всё зависит от первоначальных требований и будущего проекта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)