Как пройти тестирование скорости моего PHP-скрипта? - PullRequest
1 голос
/ 24 апреля 2009

У меня есть скрипт, который работает медленно, и мне было интересно, как я могу рассчитать его и посмотреть, какие исправления улучшают скорость. Есть ли таймер PHP?

Обновление: подумал, что я должен уточнить ... Сценарий, который работает медленно, - это сценарий моего списка рассылки, который отправляет электронное письмо всем в списке. Поэтому я перебираю список подписчиков и отправляю им по электронной почте одно за другим. Это так медленно, что я подумал, что было бы интересно узнать, сколько времени понадобилось для итерации по массиву. Поэтому я ищу быстрый и простой способ проверить это.

Ответы [ 4 ]

1 голос
/ 24 апреля 2009

Лучшее, что я знаю и использую постоянно, - это использование профилировщика. Мой профилировщик по выбору - Xdebug , который имеет встроенный профилировщик, и установить его в настройке PHP довольно легко. После запуска он может предоставить вам все виды отладочной и профилирующей информации, а формат вывода Xdebug может быть прочитан с помощью удивительного инструмента kCacheGrind ( для визуализации и составления отчетов о стеке и построения графиков вашего Поток приложений ), если вы счастливый участник Linux. Что бы я делал без этих инструментов!?

Кроме того, есть несколько ловушек с точки зрения скорости, когда дело доходит до Zend Framework, в основном связанных с недостаточным использованием класса Zend_Cache или замысловатыми классами, где вам, возможно, следует использовать класс Zend_Registry.

Счастливое профилирование.

1 голос
/ 24 апреля 2009

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

Мне нравятся такие сайты, как http://www.phpbench.com/, которые рассказывают вам больше об основных потребностях в php.

Написание php с использованием Zend Framework на самом деле ничего не говорит о вашем коде. Соблюдаете ли вы стандарты Zend Coding?

http://www.php.net/getrusage может быть полезно для вашей проблемы с синхронизацией.

Удачи!

edit: дополнительная ссылка для функции getrusage (ссылка также указана на странице php.net).

edit 2: Для вашего списка рассылки вы можете проверить phpbench.com, например, с количеством до цикла, что экономит некоторое время.

Как вы отправляете свои письма? Это может быть узким местом.

Удачи!

0 голосов
/ 28 апреля 2009

Я использовал класс таймера, который я нашел похожим на этот: http://forum.codecall.net/php-tutorials/4254-php-timer-class.html

Я просто запустил таймер в начале цикла и записывал продолжительность в конце каждой итерации. Выяснилось, что в среднем на электронную почту уходит от 3 до 4 секунд! Пять минут на рассылку по электронной почте - это слишком много. Время рефакторинга ...

0 голосов
/ 25 апреля 2009

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

Я создаю нечто подобное в ZF, поэтому мне интересно посмотреть, что произойдет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...