Intereting Posts
yii2 – как установить десятичное значение валюты Как использовать серверные переменные в тестах PHPUnit Test? Создание многомерного массива из текстовых строк Что не так в развертывании этого приложения Laravel? Нужен ли я эффективный домен вместо vhost, используемый в моей локальной среде? Файлы PHP отправляют только «parsererror» через AJAX Прокрутите многомерный массив и удалите определенные ключи Как я могу принимать значения из этого массива выполнить две команды оболочки в одном выражении exec php Аутентификация API-интерфейса WordPress REST без страницы входа в систему SQL ORDER BY с использованием подготовленных операторов ИСПОЛЬЗОВАНИЕ if заявление не работает, как должно Как вычитать с помощью SQL в MYSQL между двумя значениями даты и получить результат в минутах или секунде? Удалить повторяющийся символ PHP readfile (), вызывающий коррумпированные загрузки файлов pcntl_fork и соединение MySQL ушло

Windows 7 php + Symfony2 ужасно медленно

Это проблема, которую я испытываю в течение длительного времени. Я хочу запустить PHP-приложения на своем компьютере с Windows, и он имеет ужасное время загрузки, около 10-25 секунд. Я много пробовал:

  • Сначала я попробовал простую установку XAMPP
  • Я читаю WAMP, возможно, быстрее, поэтому я тоже пробовал WAMP. Это дало мне те же результаты
  • Затем я установил nginx-сервер с PHP, но это не помогло ни
  • Наконец, я установил Ubuntu 11.10 в VirtualBox, и я поделился файлами Windows, содержащими мой проект, но результат был еще хуже: за время загрузки более 22 секунд каждый раз.

ОБНОВЛЕНИЕ : я даже попробовал APC – он немного улучшился, но все же 6-8 секунд / страница

Я загрузил свои файлы на сервер linux (общий хостинг), на котором он работает примерно 300-500 мс. На установке XAMPP я попытался запустить другие приложения (например, не Symfony2) (например, phpmyadmin), которые также были медленнее, чем на общем хостинге, но не очень медленны, с временем загрузки 2-3 секунды. До тех пор, пока я не перейду на Linux в качестве основной ОС, как я мог бы повысить производительность? У меня есть ноутбук с процессором i7, 4 ГБ оперативной памяти, 5400RPM HDD, Win7 x64.

Спасибо за помощь!

UPDATE2: По какой-то загадочной причине моя маршрутизация Symfony не работала с fcgid (это дало мне ошибку 404 для всего), поэтому я вернулся для использования PHP в качестве модуля. Теперь он стал самым худшим из когда-либо (хуже, чем когда-то в качестве модуля): режим приложения 20-25 секунд, а в режиме dev – более 30 секунд каждый раз, поэтому я получаю ошибку тайм-аута, и это то же самое с без APC.

Здесь вы можете увидеть эту ошибку. Это воспроизводится: каждый раз, когда он достигает другой точки исполнения в течение 30 секунд:

введите описание изображения здесь

У меня была аналогичная проблема с Symfony 1 какое-то время на XP и Server 2003. Решение заключалось в установке ускорителя PHP (для нас в настоящее время лучше использовать APC, а в FastCGI / fcgid – лучшая ставка для APC).

Добавление: прошло много времени с тех пор, как я использовал Apache в Windows. Я, как правило, придерживался мнения, что его работа стабильно улучшается, а не хуже; однако, как и в случае с самыми необычными настройками, YMMV. В соответствии с моим предыдущим комментарием, я рекомендую задать ваш вопрос в Apache Lounge , где я ранее получил отличные советы экспертов.

Если память работает правильно, они могут предложить вам бесплатный двоичный файл Apache, скомпилированный с лучшими инструментами, чем стандартный, предлагаемый на веб-сайте Apache.

Обновить:

Поскольку PHP 5.5 теперь интегрировал PHP OPCache, это ускоряет время выполнения. В моей настройке полный запрос с доступом к базе данных занимает 180 мс.

шаги:

  1. Обновление до последней версии php
  2. Включить OPCache
  3. Отключить xdebug
  4. Установите realpath_cache_size = 2M, как указано в DemonTPx.

Настройки php.ini :

 realpath_cache_size = 2M [XDebug] xdebug.profiler_enable = 0 xdebug.remote_enable = 0 [opcache] zend_extension = "C:\xampp18\php\ext\php_opcache.dll" opcache.enable = 1 opcache.enable_cli = 0 opcache.memory_consumption = 128 opcache.interned_strings_buffer = 8 opcache.max_accelerated_files = 4000 

Почему Windows медленнее, чем Unix?

Как обсуждалось здесь , PHP очень медленный в файлах_exists и filemtime () в Windows. так как Symfony2 много использует эти функции в режиме dev. мы не достигнем 700 мс (в <= 5.4) в Windows. PHP 5.5 позволяет теперь использовать 180 мс.

Решением может быть WinCache, разработанный компанией Microsoft для решения этой проблемы в IIS. Но поскольку он работает только в нескольких версиях Windows, а также только с IIS, это не решение для меня.

альтернатива

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

У меня точно такая же проблема. Установка следующего в php.ini увеличила производительность для меня от ~ 800 мс до ~ 300 мс:

php.ini:

 realpath_cache_size = 2M 

Еще не ~ 100 мс я получаю от unix-машины, но это имеет значение, по крайней мере,

Вау, попробовав много разных вещей, мне, наконец, удалось переместиться с 15-секундного времени выполнения на 3s exec time на windows7 с помощью wamp.

Как установить расширение wincache: http://us2.php.net/manual/en/wincache.installation.php

Где скачать dll wincache: http://sourceforge.net/projects/wincache/

Изменение конфигурации php.ini:

 [PHP] realpath_cache_size = 2M extension=php_wincache.dll ; XDEBUG Extension ;zend_extension = "C:/Net Generation/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11.dll" ; [xdebug] xdebug.remote_enable = off xdebug.profiler_enable = Off xdebug.profiler_enable_trigger = off xdebug.profiler_output_name = cachegrind.out.%t.%p xdebug.profiler_output_dir = "C:/Net Generation/wamp/tmp" xdebug.show_local_vars=0 xdebug.max_nesting_level=200 [opcache] zend_extension = "C:/Net Generation/wamp/bin/php/php5.5.12/ext/php_opcache.dll" opcache.enable = 1 opcache.enable_cli = 0 opcache.memory_consumption = 128 opcache.interned_strings_buffer = 8 opcache.max_accelerated_files = 4000 

Я думаю, что у вас есть проблема с механизмом кэширования. проверьте каталог приложений \ cache. должна быть папка с именем dev. если он не существует или он пуст, проверьте права доступа к папке. когда я удаляю файлы dev и prod в каталоге app \ cache, для загрузки страницы требуется 18 секунд, но после этого требуется всего 500 мс.

Несколько лет назад у меня была такая же проблема. Какое антивирусное программное обеспечение вы используете в фоновом режиме? Попробуйте деактивировать его для целей dev или изменить его. Также могут быть некоторые службы индексирования, работающие в фоновом режиме. Symfony 2 состоит из> 15000 файлов с продавцами. Также попробуйте сделать это классическим способом, переустановив Windows с нуля. Мои сайты занимают обычно от 100 до 500 мс, а мой ноутбук медленнее, чем у вас. (Intel C2D P8600)

Просто предположение (и, вероятно, не правильное), но это может быть связано с MySQL. Увидев, как вы упоминали PhpMyAdmin и Symfony 2 как проверенные вами PHP-приложения, оба полагаются на MySQL (при условии, что MySQL настроен в Symfony 2). Вы не упомянули об этом в своем сообщении, но в настройке VirtualBox вы случайно позволили скрипту, запущенному на Ubuntu, подключиться к серверу MySQL на вашей главной машине Windows?

Вы можете проверить PHP Benchmark для некоторых сценариев тестирования производительности и посмотреть, будут ли эти скрипты работать более быстро.

Еще одна вещь, которую вы можете попробовать, – использовать Xdebug и посмотреть, находите ли вы (а) определенную (группу) функцию (ы), которая занимает слишком много времени.

Я определенно буду держать этот вопрос в качестве фаворита, потому что мне слишком любопытно посмотреть, что это было сейчас 🙂 Удачи!

Проверьте оперативную память компьютера, оперативную память, используя http://oca.microsoft.com/en/windiag.asp, или запустите приложение для тестирования памяти, поставляемое с параметром загрузки компакт-диска Ubuntu.

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

Кроме того, проверьте свой жесткий диск с любым средством проверки. после этого попытайтесь выполнить дефрагментацию диска

Я бил, ваша проблема связана с оборудованием.

Мои страницы занимали 20 секунд. Я установил быстрый cgi, увеличил пределы памяти, все, не работает. Затем начал смотреть на график и заметил, что модуль брандмауэра Symfony занимал большую часть времени. Оказывается, наличие «localhost» в моей конфигурации для доктрины – вот что вызывало проблемы. Изменение этого параметра на 127.0.0.1 устранило проблему. Не знаю почему, но это описано здесь:

http://12wiki.blogspot.ca/2012/11/why-does-symfony-2-firewall-take-so.html

Время загрузки страницы зависит также от времени загрузки CSS + JS +. У меня была та же проблема в CakePHP и решена проблема с помощью mod_expires в htaccess.

Вы пробовали «ExpiresByType» в файле htaccess вашего сервера для CSS, JS и изображений? Проверьте эту страницу.