5

Недавно я заметил, что мой сервер разработки, настроенный на Windows 10, работает медленно.
Я выполнил некоторую отладку / профилирование (Prestashop 1.6) с помощью xdebug, и виноват был file_exists. Время загрузки скрипта составляло ~ 43 с, тогда как file_exist занимало ~ 40 с.

Я написал небольшой тест, чтобы увидеть, как производительность будет на моем компьютере с Windows 10 и старом ноутбуке Centos7. Вот сценарий:

<?php
$microtime = microtime(true);
function displayCounter($txt){
    global $microtime;
echo "<p> {$txt}: ". round((microtime(true) - $microtime) * 1000,0) ."ms</p>";

    $microtime = microtime(true);
}

$file_prefix = __DIR__ . '/file';

for($i= 1; $i < 1000; $i++){
    file_put_contents($file_prefix . $i, '');
}
displayCounter('File Creation');

for($i= 1; $i < 1000; $i++){
    file_exists($file_prefix . $i);
}
displayCounter('file_exists');

clearstatcache();

for($i= 1; $i < 1000; $i++){
    file_exists($file_prefix . $i);
}
displayCounter('file_exists (after cache clear)');


for($i= 1; $i < 1000; $i++){
    unlink($file_prefix . $i);
}
displayCounter('unlink');

Сервер Windows основан на SSD- накопителе и имеет следующий результат:

File Creation: 1992ms
file_exists: 1055ms
file_exists (after cache clear): 963ms
unlink: 696ms

И Linux (ноутбук с жестким диском 5400rpm )

File Creation: 226ms
file_exists: 5ms
file_exists (after cache clear): 4ms
unlink: 50ms

Я думаю, что здесь что-то не так, но пока не знаю что - поэтому я пришел сюда за помощью.
Не могу решить, в чем здесь проблема. Любой "сервис", который я должен искать? Нравится Defender (который отключен в моем случае)

РЕДАКТИРОВАТЬ

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

Все тесты (кроме M.2 Drive) хороши, если задан текущий путь cmd где выполняется работа.

C: M.2
H: SSD
D: SSDHD
F: / E: HDD

(GPT) Current Folder C:\ (M.2)
D:\test_file_exists\test.php (SSDHD)
File Creation: 2541ms
file_exists: 1188ms
file_exists (cached in theory): 986ms
file_exists (after cache clear): 879ms
unlink: 1361ms

(GPT) Current Folder C:\ (M.2)
E:\test_file_exists\test.php (HDD)
File Creation: 2617ms
file_exists: 1031ms
file_exists (cached in theory): 893ms
file_exists (after cache clear): 841ms
unlink: 1156ms

(MBR) Current Folder C:\ (M.2)
C:\test_file_exists\test.php (M.2)
File Creation: 2485ms
file_exists: 2283ms
file_exists (cached in theory): 2045ms
file_exists (after cache clear): 2053ms
unlink: 1191ms

(MBR) Current Folder C:\ (M.2)
F:\test_file_exists\test.php (HDD)
File Creation: 2274ms
file_exists: 1080ms
file_exists (cached in theory): 922ms
file_exists (after cache clear): 838ms
unlink: 1105ms

(MBR) Current Folder C:\ (M.2)
H:\test_file_exists\test.php (SSD)
File Creation: 2243ms
file_exists: 1024ms
file_exists (cached in theory): 860ms
file_exists (after cache clear): 903ms
unlink: 1134ms

=============== TESTS STARTED IN ROOT OF VOLUME

(GPT) Current Folder D:\ (SSDHD)
D:\test_file_exists\test.php (SSDHD)
File Creation: 2277ms
file_exists: 1056ms
file_exists (cached in theory): 904ms
file_exists (after cache clear): 897ms
unlink: 1135ms

(GPT) Current Folder E:\ (HDD)
E:\test_file_exists\test.php (HDD)
File Creation: 2436ms
file_exists: 1116ms
file_exists (cached in theory): 844ms
file_exists (after cache clear): 849ms
unlink: 1145ms

(MBR) Current Folder C:\ (M.2)
C:\test_file_exists\test.php (M.2)
File Creation: 2311ms
file_exists: 2115ms
file_exists (cached in theory): 1986ms
file_exists (after cache clear): 1969ms
unlink: 1168ms

(MBR) Current Folder F:\ (HDD)
F:\test_file_exists\test.php (HDD)
File Creation: 2365ms
file_exists: 1031ms
file_exists (cached in theory): 961ms
file_exists (after cache clear): 849ms
unlink: 1112ms

(MBR) Current Folder H:\ (SSD)
H:\test_file_exists\test.php (SSD)
File Creation: 2251ms
file_exists: 1066ms
file_exists (cached in theory): 873ms
file_exists (after cache clear): 835ms
unlink: 1137ms
=============== TESTS STARTED IN FOLDER OF SCRIPT

(GPT) Current Folder D:\test_file_exists (SSDHD)
D:\test_file_exists\test.php (SSDHD)
File Creation: 1279ms
file_exists: 61ms
file_exists (cached in theory): 60ms
file_exists (after cache clear): 51ms
unlink: 1873ms

(GPT) Current Folder E:\test_file_exists (HDD)
E:\test_file_exists\test.php (HDD)
File Creation: 1395ms
file_exists: 68ms
file_exists (cached in theory): 59ms
file_exists (after cache clear): 48ms
unlink: 1183ms

(MBR) Current Folder C:\test_file_exists (M.2)
C:\test_file_exists\test.php (M.2)
File Creation: 1410ms
file_exists: 1261ms
file_exists (cached in theory): 1293ms
file_exists (after cache clear): 1298ms
unlink: 1129ms

(MBR) Current Folder F:\test_file_exists (HDD)
F:\test_file_exists\test.php (HDD)
File Creation: 1285ms
file_exists: 58ms
file_exists (cached in theory): 61ms
file_exists (after cache clear): 57ms
unlink: 1639ms

(MBR) Current Folder H:\test_file_exists (SSD)
H:\test_file_exists\test.php (SSD)
File Creation: 1365ms
file_exists: 72ms
file_exists (cached in theory): 55ms
file_exists (after cache clear): 62ms
unlink: 1092ms

1 ответ1

1

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

Иногда случается, что работа в безопасном режиме позволяет Windows решить свою проблему. Иногда бывает так, что перезагрузка пару раз решает проблему. Может быть, это было сочетание обоих, которые помогли здесь.

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

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


Оригинальный ответ

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

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

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

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

См. Эту статью для получения информации об использовании автозапуска:
Использование автозапуска для работы с процессами запуска и вредоносными программами.

Автозапуск отобразит все продукты запуска на вкладке «Все». Я предлагаю изучить список для всего, что могло бы позвонить в звонок. Если ничего не приходит в голову, вы можете использовать грубую силу, отключая блоки продуктов и перезагружая их каждый раз, уточняя количество отключенных продуктов, пока продукт не будет найден.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .