PHP Acesso a arquivos muito lento no windows

5

Recentemente, notei que meu servidor de desenvolvimento configurado no Windows 10 é lento como o inferno.
Eu fiz alguns depuração / profiling (Prestashop 1.6) com xdebug e culprint era file_exists. O tempo de carregamento do script foi de aproximadamente 43 segundos do que o file_exist levou ~ 40s.

Eu escrevi um pequeno teste, para ver como seria o desempenho na minha máquina Windows 10 e no velho laptop Centos7. Aqui está o script:

<?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');

O servidor Windows é baseado na unidade SSD e o resultado é:

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

E linux (laptop com unidade 5400rpm HDD )

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

Eu acho que algo está errado aqui, mas não sei o que ainda - então eu vim aqui para ajudar.
Não consegue resolver qual é o problema aqui. Qualquer "serviço" que eu deveria procurar? Like Defender (que está desativado no meu caso)

EDITAR

Fiz mais alguns testes com o mesmo script. Repassei algumas vezes para verificar e os resultados estão abaixo. O diretório do qual você chama script é importante. Ainda não consigo encontrar o que quebra (exceto eu sei que é o Windows ...)

Todos os testes (exceto M.2 Drive) são bons quando o atual cmd path é definido onde o trabalho está sendo feito.

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
    
por Gacek 19.12.2017 / 17:13

1 resposta

1

O cartaz agora relata que seu problema desapareceu depois, de acordo com a minha sugestão, ele iniciou em modo de segurança.

Às vezes, acontece que a execução no modo de segurança permite que o Windows resolva É problema. Às vezes também acontece que reiniciando um par de vezes Corrige um problema. Talvez tenha sido a combinação de ambos que ajudou aqui.

Será hilário se o problema for resolvido por um efeito colateral de minha sugestão, por acidente.

Isso não deve prejudicar a validade do procedimento que descrevi na minha resposta original abaixo, destinada a detectar um produto problemático que está desativado ao inicializar no modo de segurança.

Resposta original

Tudo funciona corretamente quando iniciado Modo seguro com rede . Neste modo, o Windows é iniciado apenas com drivers principais e suporte de rede, e, especialmente, sem lançar na inicialização de quaisquer aplicativos de terceiros ou drivers.

A sua lentidão é, portanto, provavelmente causada por algum produto que instalado no computador. Você precisará, portanto, localizar e desativá-lo.

Eu não sei se o slow-down está limitado apenas ao PHP. No restante da minha resposta, tratarei o caso geral do Windows. Mas se o problema é limitado apenas ao PHP, isso pode ser causado por algum add-on para o próprio PHP.

O melhor produto que ajudará a encontrar um problema com uma instalação produto é autoruns , com o qual você pode ativar ou desativar os produtos de inicialização com um clique.

Veja este artigo para obter informações sobre o uso de versões automáticas: Usando o Autoruns para lidar com processos de inicialização e malware .

O Autoruns exibirá todos os produtos de inicialização na guia "Tudo". Sugiro estudar a lista para qualquer coisa que possa soar um pouco. Se nada vier à mente, você poderia usar a força bruta desligando os blocos de produtos e reinicialização de cada vez, refinando o número de produtos desativados até que o produto seja encontrado.

Depois de encontrar o produto, é a sua escolha se deseja desinstalá-lo definitivamente ou procurar uma versão mais recente ou entrar em contato com o desenvolvedor. Também estamos aqui para ajuda.

    
por 31.12.2017 / 15:20