2012-04-21 2 views
1

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

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

Где еще я могу посмотреть?

Спасибо.

+0

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

+1

Вы также должны учитывать кеш файловой системы OS и системы виртуальной памяти. Файлы PHP будут считаны с диска в первый раз, но из кеша файловой системы при последующих запусках. Механизм PHP также будет считан в память и будет вызываться оттуда вместо загрузки с диска. – GordonM

+0

Я вижу, как доступ к диску может быть фактором для cli. Он не может объяснить поведение на удаленном хосте, где PHP используется для получения начального и последующего времени. – geoB

ответ

1

Мой первый порт захода в таких обстоятельствах, как это было бы профилировать сценарий, чтобы узнать, что занимает время. Вы говорите, что можете реплицировать проблему локально. В этом случае возьмите себе профилировщик (xDebug и Zend Debugger могут оба профильные скрипты, могут быть и другие) и профайл вашего скрипта, чтобы узнать, куда идет время.

+0

Интересная концепция - но я не понимаю, как xDebug поможет мне сосредоточиться на первом запуске процесса. Любая ссылка, где я могу это прочитать? – geoB

+0

@geoB Перейдите по ссылке к xDebug. В нем объясняется, как получить профилирование и запустить. Результат этого должен показать вам, что потребляет больше всего времени, и поможет вам исследовать, как его улучшить. – liquorvicar

+0

Doh! Я на нем. Я ожидаю, что это займет несколько дней, прежде чем я узнаю что-нибудь полезное. Будет сообщать о результатах. Thnx. g – geoB

Смежные вопросы