Который является лучшей производительностью в PHP?

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

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

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

электронная почта больше не обнаруживается как спам перспективой.

5
задан zombat 2 August 2009 в 00:04
поделиться

7 ответов

Трудно сказать. 4000 строк - это не так уж и много в области синтаксического анализа файлов. С точки зрения управления кодом, это становится громоздким, но вы вряд ли увидите заметную разницу в производительности, разбив ее на 2, 5 или 10 файлов, а страницы будут включать только те, которые им нужны. (это лучшая практика кодирования, но это отдельная тема). Разница между количеством прочитанных строк и количеством файлов, которые анализатор должен открыть, не кажется достаточно большой, чтобы гарантировать что-либо существенное. Моя первая реакция такова, что, вероятно, вам не стоит беспокоиться об этом.

С другой стороны, я работал над проектом корпоративного уровня, в котором некоторые операции имели include () дерево, которое часто расширялось до сотен файлов.

5
ответ дан 18 December 2019 в 14:49
поделиться

Я думаю, было бы лучше, если бы вы можете разделить файл функций на компоненты, соответствующие каждой странице; и вызовите эти компоненты на соответствующих страницах. Только мои 2 цента!

p / s: Я любитель PHP и пытаюсь создать сайт на PHP; Никакими функциями не пользуюсь. Не могли бы вы рассказать мне, какие функции вам понадобятся для сайта?

1
ответ дан 18 December 2019 в 14:49
поделиться

Если вы загружаете файл из 4000 строк и используете, возможно, 1 функцию, которая равна 10 линий, то да, я бы сказал, что это неэффективно. Даже если вы использовали множество функций из 1000 объединенных строк, это все равно неэффективно.

Я предлагаю сгруппировать связанные функции вместе и хранить их в отдельных файлах. Таким образом, если страница имеет дело, например, только с функции базы данных вы можете загрузить только из файла / библиотеки функций базы данных.

Еще одна причина разделения функций - удобство обслуживания. Если вам нужно изменить функцию, вам нужно найти ее в моналитическом включаемом файле. У вас также могут быть функции, которые очень, очень похожи, но даже не осознают этого. Сортировка функций по тому, что они делают, позволяет сравнивать их и избавляться от ненужных вещей или объединять две функции в одну функцию общего назначения.

1
ответ дан 18 December 2019 в 14:49
поделиться

По моему опыту, наличие большого включаемого файла, который включается повсюду, может фактически убить производительность. Я работал над браузерной игрой, в которой все правила игры были динамически сгенерированным PHP (среди прочего), а файл весил около 500 КиБ. Это определенно повлияло на производительность, и мы рассматривали возможность создания расширения PHP.

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

1
ответ дан 18 December 2019 в 14:49
поделиться

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

1
ответ дан 18 December 2019 в 14:49
поделиться

Если вы можете установить расширения на свой сервер, вам следует взглянуть на APC ( см. Также ).
Это, кстати, бесплатно ;-); но вы должны быть администратором своего сервера, чтобы установить его; поэтому он обычно не предоставляется на виртуальном хостинге ...

Это то, что называется «кеш-памятью кода операции».

В основном, когда вызывается сценарий PHP, происходят две вещи:

  • сценарий «компилируется» в коды операций
  • коды операций выполняются

APC сохраняет коды операций в ОЗУ; поэтому файл не нужно перекомпилировать каждый раз при его вызове - и это здорово как для загрузки процессора, так и для производительности.


Чтобы ответить на вопрос немного подробнее:

  • 4000 строк не это много, если говорить о выступлениях; Откройте пару файлов любого большого приложения / фреймворка, и вы быстро получите пару тысяч строк
  • , действительно важная вещь, которую следует учитывать, - это ремонтопригодность: с чем будет легче работать вам и вашей команде?
  • загрузка большого количества небольших файлов может потребовать большого количества системных вызовов, которые выполняются медленно; но они, вероятно, будут кэшироваться ОС ... Так что, вероятно, не , что релевантное
  • Если вы выполняете хотя бы 1 запрос к базе данных, этот (включая двусторонний обмен данными между сервером PHP и Сервер БД) , вероятно, займет больше времени, чем анализ пары тысяч строк; -)
3
ответ дан 18 December 2019 в 14:49
поделиться

Как правило, с точки зрения управления файлами лучше разбивать файлы на более мелкие, потому что вам нужно загружать только те файлы, которые вы действительно используете. Но для 4000 строк это, вероятно, не будет иметь большого значения.

Я бы предложил решение, подобное этому

function inc_lib($name)
{
    include("/path/to/lib".$name.".lib.php");
}

function inc_class($name)
{
    include("/path/to/lib".$name.".class.php");
}
1
ответ дан 18 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: