Что касается эффективности выполнения PHP, в Интернете есть множество специальных статей, большинство из которых представляют собой споры между лагерями PHP и Java. Различные аспекты приложений и разные среды выполнения приведут к большей разнице в эффективности. Упомянутые здесь «большие» приложения не относятся к конкретной реализации крупных веб-сайтов, таких как Google, eBay и Yahoo. Я просто надеюсь, что ваша система будет работать быстрее и плавнее и сможет обслуживать больше пользователей в Интернете. Я надеюсь, что это так. Могу дать PHP. Небольшая помощь новичкам.
Упомянутые здесь «большие» приложения не относятся к конкретной реализации крупных веб-сайтов, таких как Google, eBay и Yahoo. У меня нет намерения убеждать читателей отказаться от своих концепций и убеждений, я просто надеюсь, что все системы смогут работать быстрее. и более плавный. Он может принимать больше пользователей онлайн, и я надеюсь, что он может помочь новичкам в PHP.
Что касается эффективности исполнения PHP, в Интернете есть множество специальных статей. Большинство из них начинаются со споров между лагерями PHP и Java и заканчиваются неопределенными ожиданиями. Редко можно увидеть однозначный вывод. Действительно, эффективность выполнения программы трудно определить путем сравнения. Различные аспекты приложения и разные среды выполнения приведут к большей разнице в эффективности. И эффективность также необходимо взвешивать. Все знают, что язык ассемблера очень низкоуровневый и на нем можно писать очень эффективные программы. Однако я редко видел, чтобы кто-нибудь использовал ассемблер для веб-разработки и имел возможность писать программы на ассемблере. эффективные программисты, похоже, достойны всеобщего уважения, ха-ха~ Нам не нужно обсуждать разницу между PHP и ассемблером, если мы знаем разницу между нашим собственным PHP и PHP других людей.
Прежде всего, давайте проясним суть этой статьи: должен быть один или несколько серверов, которыми можно управлять самостоятельно, а не виртуальное хост-пространство. В конце концов, уже существует множество классических работ и зрелых фреймворков для систем общего назначения, которые могут работать на виртуальных хостах. Многие из их концепций также были унаследованы и развиты многими нынешними пользователями PHP. Всё больше и больше Чем больше становится так называемых "фреймворков", они как звёзды на небе, больше не хочу о них писать, потому что, во-первых, мой собственный уровень не очень, я не могу ничего написать. новое, и даже если я это напишу, это рассмешит людей. Во-вторых, об этом написано слишком много статей и слишком много мнений. Замешательство — главная причина смерти многих страстных будущих гениальных программистов.
Существует большая разница в оптимизации эффективности между программами, выполняемыми на выделенном сервере, и программами, которые можно запускать на виртуальном хосте. Конечно, можно без доработок установить набор дискузов на один или даже на кучу независимых серверов, но действительно ли вы получите максимальную оптимизацию производительности?
Независимый сервер означает, что пользователь имеет полный контроль над машиной, включая установку и удаление программного обеспечения, настройку параметров системы и даже изменение исходного кода. Благодаря такой открытой аппаратной платформе производительность отражается не только на скорости, но также включает в себя безопасность, стабильность и т. д. В отличие от виртуальных хостов, пользователи должны сами настраивать параметры веб-сервера, устанавливать и настраивать PHP, базы данных и устанавливать всякую ерунду (как я люблю говорить) и, конечно, они должны нести за это ответственность.
Во-первых, давайте выдвинем несколько терминов: время выполнения, шаблон, инкапсуляция базы данных, кеш, буфер, хэш, демон и crontab.
Всем известно, что время выполнения — это время, необходимое программе для выполнения от начала до конца. Поскольку Интернет является временным и не имеет состояния, время выполнения является индикатором эффективности выполнения веб-программ. Оно не подходит для измерения программ C/S или фоновых программ-демонов, поскольку многие из них выполняются непрерывно. Типичным примером времени выполнения страницы является отображение времени внизу страницы форума Discuz. Обычно Discuz составляет от нескольких миллисекунд до десятков миллисекунд, в зависимости от используемой платформы, объема данных и текущей нагрузки на систему.
С шаблонами знакомы все. Хотя многие люди просто используют их, они не знают, зачем они их используют. Шаблоны традиционно являются способом разделения логических уровней. В верхней структуре MVC они отделяют уровень представления от нижнего уровня. При фактическом использовании они облегчают разделение труда между программистами и дизайнерами интерфейса. Однако сейчас во многих случаях из-за неправильного использования шаблонов вместо того, чтобы способствовать разделению труда и сотрудничеству между программистами и дизайнерами интерфейсов, он стал главным виновником взаимной ненависти между программистами и художниками (кажется, я говорил об этом в предыдущий пост), многие люди жалуются, что им приходится тратить много времени на организацию шаблонов.
Инкапсуляция базы данных, похоже, больше связана с Java. Она обеспечивает унифицированный интерфейс вызова для различных систем баз данных, обычно некоторых инкапсулированных классов. Эти классы иногда также выполняют некоторые задачи, такие как проверка SQL, фильтрация и т. д. Упаковка БД, PEAR DB, Adodb и т. д. в PHPLIB известны и используются многими людьми.
Кэш и Буфер кажутся одним и тем же: Кэш называется кешем, а Буфер называется буферизацией. В концепции аппаратного обеспечения целью кэша является соединение двух устройств с разной скоростью, таких как регистры и память, процессор и шина PCI, шина IDE и жесткий диск. Первоначальное значение слова «Буфер» — пружинный буфер, используемый для уменьшения или поглощения ударной нагрузки. Буфер — это метод предварительного доступа к данным, который используется для временного хранения данных и их передачи со скоростью, отличной от скорости приема. Метод обновления буфера может автоматически обновляться в соответствии с интервалами времени, в то время как кэш уделяет больше внимания «скорости попадания» и помещает небольшой объем данных, которые часто используются в текущий период времени, в высокоскоростное устройство для удобного чтения. и писать. При разработке программ, хотя не существует высокоскоростных или низкоскоростных устройств, источники данных могут иметь разную эффективность чтения и записи. Для небольшого объема данных чтение и запись текстовых файлов обычно более эффективны, чем доступ к базе данных, а та же эффективность чтения и записи текстовых файлов в tmpfs лучше, чем эффективность прямого дискового ввода-вывода. Буфер больше отражается на взаимодействии процессов и очередях. Во многих случаях это происходит не потому, что получатель не может читать быстрее, а потому, что нет необходимости читать быстрее.
Процесс-демон — это программа, которая постоянно выполняется в фоновом режиме. Обычно она играет роль в мониторинге, управлении процессами и предоставлении внешних услуг. Например, сам Apache можно понимать как процесс-демон, хотя на самом деле он состоит из множества процессов, которые часто обновляются (основной процесс фиксирован).
Crontab — это запланированная программа UNIX/Linux, которая немного похожа на «запланированные задачи» Windows. Она устанавливает определенный интервал времени или определенный момент времени для выполнения определенной программы. Обычно он используется для выполнения автоматических обновлений, очистки временных данных и других операций, которые автоматически выполняются один раз в определенный период времени.
Другая особая концепция (особенно для людей, привыкших к общей разработке системы) заключается в том, что после того, как у нас есть независимый сервер, нет необходимости ограничивать себя функциями, которые может предоставить PHP. Когда мы неосознанно становимся хозяевами системы, мы. нужно усердно работать, чтобы осознать это. Есть много вещей, которые мы можем использовать. PHP не всесилен (это точно), и его функциональные недостатки могут быть полностью компенсированы Perl. Как общий язык, Perl может предоставить больше функциональных возможностей, а его модули плотны, как песок. Случайный и извращенный язык предоставляет бесконечные возможности. энергия. Недостатки производительности PHP можно компенсировать с помощью C. Основы PHP унаследованы от C. Сам PHP также разработан на C. Вполне разумно использовать C для расширения PHP.
Сам Linux поддерживается C и Perl (я говорю это не для того, чтобы преувеличить статус Perl. Вы можете увидеть, сколько Perl-скриптов имеется в стандартном Linux, и посмотреть, чувствует ли система себя инвалидом без Perl). PHP унаследовал большую часть своего синтаксиса от C и изучил большинство веб-функций, а также символ «$», который, по-видимому, противоречит открытому исходному коду Perl (PHP на заре своего существования был сценарием Perl).
Давайте проанализируем часть кода, который я использую (Примечание: применимо к автономным серверам Linux. Кажется, я уже давно отказался от крупномасштабной разработки для Windows и виртуальных хостов). Он использует некоторые методы, которые могут быть знакомыми, незнакомыми или ненормальными. Моя система — RedHat AS3, ничего особенного, версия PHP — 4.4.0, MySQL — 4.1. Я никогда намеренно не пишу код, который должен использовать новые возможности PHP5, если в этом нет действительной необходимости.
Мой корневой веб-каталог находится в /www. Apache и PHP по умолчанию устанавливаются в /usr/local/. MySQL — это загруженная и скомпилированная двоичная версия, и я также оставляю ее там. Поскольку это только для тестирования, я не хочу, чтобы это выглядело беспорядочно. Что касается реальных проектов, особенно в случае нескольких серверов, вам необходимо хорошо развернуть свою систему.
Чтобы сделать структуру системы более понятной, я поместил все файлы, которые мне нужны, во дополнительный каталог.
Вот несколько фрагментов из общего заголовочного файла /includes/kernel/common.inc.php:
﹤?php
if (!define('IN_BSG')) {
Выход;
}
?﹥
Приведенный выше код гарантирует, что его можно вызывать только легальными программами и он не будет включен в другие файлы. Если исполняемая программа не определяет константу «IN_BSG», она завершится после включения этого файла common.inc.php.
﹤?php
list($usec, $sec) = взорваться(" ", microtime());
$page_time_start = $usec + $sec;
?﹥
Эти две строки, возможно, знакомы каждому, которые используются для расчета времени начала выполнения программы. Перед завершением программы это значение рассчитывается еще раз, чтобы узнать время, необходимое для выполнения программы. Если вас это не волнует, вы можете смело закомментировать это.