Fesor
@Fesor
Full-stack developer (Symfony, Angular)

Скорость работы PHP в Windows. Отчего так медленно?

Собственно пару месяцев назад случилось так, что пришлось развернуть Apache непосредственно под Windows (Windows 8). Раньше работал под виртуальной машиной с Debian и все было более менее нормально.


Работая с проектами на Symfony2 столкнулся с приличным прогибом производительности. Профайлер показал что дольше всего отрабатывали функции preg_match, file_exists и PDO. Проблемы с PDO удалось решить указав в качестве хоста непосредственно IP адрес, но вот с file_exists и preg_match проблемы остались. Выполнение этих функций занимает порядка 40%-50% отработки скриптов.


Причем на машине с ubuntu/debian профайлер никаких аномалий не показывает да и вообще код отрабатывает в десятки раз быстрее (0,3 секунды против 3-4 секунд на Windows).


В порядке эксперимента сегодня установил Debian под виртуальной машиной на том же разделе, где находится код проекта. Сделал замеры производительности и оказалось что под управлением Debian, даже в виртуальной машине, прирост производительности в PHP достигает 300% а для MySQL запросы выполняются в 2 раза быстрее.


Система чистая, ничего особо не изменялось в настройках. Все (от Windows до виртуальной машины) размещено на SSD. Меня лично удивляет настолько низкие показатели производительности. Возможно что-то не так именно у меня, посему интересует сталкивался ли кто с таким и как лечится.
  • Вопрос задан
  • 5227 просмотров
Решения вопроса 1
taliban
@taliban
php программист
file_exists — это самое слабое звено + сумма всех инклудов. В винде на порядок медленней идет доступ к файловой системе. Отчасти из-за этого производительность стдрадает, если убрать все куски кода которые хоть каким-то образом касаются файловой системы, то скорость будет уступать линуксу незначительно (один файл с алгоритмом каким-то). И пока такая ситуация есть придется мириться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
SpectraL
@SpectraL
Вэб разработчик (php, nodejs, js), тим лид.
Я могу ошибаться, но вполне вероятно тут несколько причин:
1 Отличия в файлах конфигурации из коробки для Linux и Windows версий
2 Всетаки Windows не настолько родная среда как unix системы
Ответ написан
@shagguboy
поставь APC или другой кэшер.
хотя странно это. у меня на семерке демо страничка открывается за 0,07 секунды.
может рантаймы не те стоят?
Ответ написан
@Vampiro
Я не смог победить. Даже ramdisk не спасает. Уж слишком много инклудится в Симфони. В одном только кеше лежит 1к файлов на 40Мб, и для каждого файла оно еще и дату модификации проверяет… Пришлось ставить vbox. Там есть возможность запуска машин без окна, чтобы не забивать таскбар.

Буду рад также найти тут ответ какой-нить.
Ответ написан
BoneFletcher
@BoneFletcher
Мне помогла покупка SSD-диска. С использованием APC, в prod окружении запрос идет 200ms, в dev — 1000ms.
До замены стоял ноутбучный 2.5" 5400 об/мин — запрос в dev окружении (с использованием APC) выполнялся 5-8 секунд.
Ответ написан
@nuclear
Победил установкой Zend Server, xdebug вроде как отключен
ramdisk, apc и многое другое не помогает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 февр. 2020, в 04:53
2000 руб./за проект
19 февр. 2020, в 02:24
500 руб./за проект
18 февр. 2020, в 23:53
8000 руб./за проект