Сведения о вопросе

krutoi

06:05, 19th August, 2020

Теги

php   performance    

PHP производительность

Просмотров: 412   Ответов: 13

Что я могу сделать, чтобы увеличить производительность / скорость моих скриптов PHP без установки программного обеспечения на моих серверах?



  Сведения об ответе

LIZA

22:50, 5th August, 2020

Профиль. Профиль. Профиль. Я не уверен, есть ли там что-нибудь для PHP, но это должно быть просто написать небольшой инструмент для вставки информации профилирования в ваш код. Вам потребуется профилировать время выполнения функций и время выполнения запросов SQL.

Итак, где у вас есть функция:

function foo($stuff) {
    ...
    return ...;
}

Я бы изменил его на:

function foo($stuff) {
    trace_push_fn('foo');
    ...
    trace_pop_fn('foo');
    return ...;
}

(Это один из тех случаев, когда множественные возвраты в функции становятся помехой.)

И SQL:

function bar($stuff) {
    trace_push_fn('bar');

    $query = ...;
    trace_push_sql($query);
    mysql_query($query);
    trace_pop_sql($query);

    trace_pop_fn('bar');
    return ...;
}

В конце концов, вы можете сгенерировать полное trace выполнение программы и использовать все виды методов для выявления ваших узких мест.


  Сведения об ответе

SKY

06:26, 12th August, 2020

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

Вы также можете быть удивлены, сколько времени тратится на плохо написанные запросы к базе данных; время, которое обычно генерируется запросами, и посмотреть, можно ли их переписать. Количество времени, затрачиваемого на выполнение фактического кода PHP, как правило, довольно ограничено, если только вы не используете некоторые неоптимальные алгоритмы.

Ни один из них не ограничивается PHP, хотя некоторые из PHP "magicy" подходов/функций могут чрезмерно защитить человека от размышлений об этих проблемах. Например, я недавно обновил скрипт, который использовал array_search для использования двоичного поиска по отсортированному массиву, и получил ожидаемое экспоненциальное ускорение.


  Сведения об ответе

SSESION

06:32, 17th August, 2020

Действительно рассмотрите возможность использования XDebug profiler: это помогает проверить, насколько определенная функция выполняется против того, что вы ожидали бы.

Я стараюсь уменьшить количество инструкций, одновременно улучшая читаемость кода, заменяя логику поиском по массивам, когда это уместно. Это то, что написал Джефф Этвуд в [лучший код-это вообще не КОД][1].

  • Кроме того, избегайте петель внутри другого цикл и вложенные операторы if/else.
  • Короткие функции. Иногда очень много код не нужно выполнять когда результат-значение уже есть известный.
  • Ненужное тестирование:

    if (count ($array) === 0) return;

    также можно записать как:

    если (! $array) возвращение;

    Еще одна функция-вызов исключен!

    [1]: http://www.codinghorror.com/blog/archives/000878.html "The Best Code is No Code At All"


  Сведения об ответе

FAriza

14:27, 12th August, 2020

Вы можете оптимизировать код с двумя основными вещами:

Оптимизация PHP связанной библиотеки и сервера

Пройдите через https://www.digitalocean.com/community/articles/how-to-optimize-apache-web-server-performance или

Вы можете использовать инструмент профилирования, такой как xhprof, чтобы просмотреть, какая часть вашего кода может быть оптимизирована, и вот ссылка для перехода: http://michaelsanford.com/compiling-xhprof-for-php-5-4/

Оптимизация кода с помощью профилировщика кода и анализатора кода

Для использования этого плагина необходимо установить Netbeans. Вот шаги, которые вам нужно выполнить:

1) Откройте NetBeans и выберите пункт меню Сервис > плагин. Затем найдите имя плагина "phpcsmd" на вкладке доступный плагин и установите его оттуда.

2) Теперь откройте terminal и быть там в качестве суперпользователя, введя команду "sudo su".

3) Установите библиотеку PEAR (если она не установлена) в свою систему, запустив следующие команды в свой terminal

a) wget http://pear.php.net/go-pear.phar
b) php go-pear.phar

Как нам это нужно для установки дальнейших аддонов.

4) затем выполните команду

"pear config-set auto_discover 1"

Это будет использоваться для установки автоматического обнаружения пути "true" для необходимых плагинов. Таким образом, они получают установку в нужное место автоматически.

5) затем выполните команду ниже, чтобы установить PHP code sniffer.

"pear install --alldeps pear/PHP_CodeSniffer"

6) Теперь, чтобы установить детектор беспорядка PHP, выполнив следующую команду

"pear install --alldeps phpmd/PHP_PMD"

Если вы получаете сообщение об ошибке типа "недопустимое имя пакета/файл пакета "phpmd/PHP_PMD"" при установке этого модуля. Вы должны использовать эту команду "pear channel-discover pear.phpmd.org", чтобы избавиться от этой ошибки. После этой команды вы можете снова запустить приведенную выше команду, чтобы установить детектор беспорядка.

7) Теперь, чтобы установить PHP зависит, выполнив следующую команду

"pear install --alldeps pdepend/PHP_Depend"

8) Теперь установите детектор PHP Copy Paste, выполнив следующую команду

"pear install --alldeps phpunit/phpcpd"

9) затем выполните команду

"pear config-set auto_discover 0"

Это будет использоваться для установки пути автоматического обнаружения "false".

10) затем откройте net beans и следуйте по пути Tools>Options>PHP>PHPCSMD


  Сведения об ответе

PHPH

13:50, 26th August, 2020

Волшебного решения не существует, и попытка предложить универсальные решения вполне может оказаться пустой тратой времени.

Где ваши узкие места? Например, являются ли ваши скрипты processor/database/memory интенсивными?

Вы проводили какое-нибудь профилирование?


  Сведения об ответе

PAGE

08:18, 6th August, 2020

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

Я всегда немного опасаюсь пытаться быть слишком умным в плане оптимизации кода, если это приносит в жертву коду clairty. Если вам нужно сделать код неясным, чтобы сделать его быстрым, не будет ли дешевле обновить hardwear вместо того, чтобы тратить свое время на попытки настроить код? В конце концов, процессорные циклы дешевле, чем циклы программистов.


  Сведения об ответе

COOL

18:17, 19th August, 2020

Те, о которых я могу думать...

  • Инварианты циклов всегда хорошо бы на него посмотреть.

  • Напишите E_STRICT и E_NOTICE совместимый код, особенно если вы есть ошибки протоколирования.

  • Избегайте оператора@.

  • Абсолютные пути для requires и включает в себя.

  • Используйте strpos, str_replace и т.д. вместо регулярных выражений, когда это возможно.

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


  Сведения об ответе

прога

11:29, 2nd August, 2020

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


  Сведения об ответе

DINO

22:19, 1st August, 2020

Сначала следуйте некоторым другим советам, таким как профилирование и принятие правильных решений о распределении ресурсов, например кэширование.

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


  Сведения об ответе

SILA

01:22, 20th August, 2020

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

Это, конечно, не требует никакого нового оборудования или специального программного обеспечения, просто критический взгляд на существующий код.

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


  Сведения об ответе

qwerty101

15:11, 12th August, 2020

Расмус Лердорф дал несколько хороших советов в своей недавней презентации "простое-это трудно" на FrOSCon '08. Если вы используете кэш байт-кода (а вы действительно должны его использовать), включение пропусков пути сильно повредит, поэтому оптимизируйте свой require/require_once.


  Сведения об ответе

ЯЯ__4

21:15, 16th August, 2020

Вы можете использовать инструмент профилирования, такой как xhprof, чтобы просмотреть, какая часть вашего кода может быть оптимизирована !


  Сведения об ответе

davran

19:02, 6th August, 2020

1) Используйте последнюю версию PHP

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

2) Используйте кэш байт-кода

Начиная с PHP 5.5 кэш байт-кода был добавлен в PHP с именем OPcache . Использование OPcache может иметь огромное значение, особенно с PHP 7. Он получает улучшения в каждой версии PHP и может даже получить реализацию JIT в будущем .

3) профилирование

При разработке профилирования дает Вам большое представление о том, что именно происходит. Это очень помогает находить узкие места в коде.

Один из наиболее часто используемых инструментов- XHProf , но официально больше не поддерживается и имеет проблемы с PHP >= 7. Альтернативой, когда вы хотите профилировать PHP >= 7, является Tideways , который является fork из XHProf .


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться