Existe uma maneira de configurar um servidor ou nas configurações do PHP para evitar que loops infinitos de digitação ($i sem $i++) aconteçam?
impedir especificamente que esse erro de digitação (privação de sono) cause iterações não intencionais (e danos):
for($i=0;$i<count($some_array);$i)
No desenvolvimento moderno de PHP, usamos analisadores de código estáticos para esse propósito. Por exemplo, você pode adotar o PHPStan , cujo propósito é exatamente este: detectar código problemático, já incluído no seu caso (embora a mensagem de erro não seja muito clara, o erro é encontrado de qualquer maneira).
Ou você pode tentar um bom IDE, já que hoje em dia eles também incluem poderosos analisadores de código estático por padrão. Acabei de verificar seu código no PHPStorm e, embora a mensagem de erro não seja tão clara, "O resultado da expressão não é usado em lugar nenhum", ela chama sua atenção para este erro incompleto
$i
.E falando do exemplo de código real usado no post: esse problema em particular é ridiculamente simples de corrigir:
não tem como esse ciclo ficar descontrolado.
vamos deixar de lado se isso está travando o servidor ou não e focar na raiz do problema: criamos um loop infinito.
então a questão é como evitar a criação de loops infinitos, ou mais especificamente: um loop descontrolado .
Um loop em execução é um loop que não foi escrito intencionalmente para se tornar um loop infinito.
Normalmente, evito isso não pela configuração do servidor, mas pela prática de codificação. Por exemplo, adiciono um contador de proteção e, se ele ultrapassar um limite, lanço uma exceção. Tenho alguns termos mais técnicos para isso, mas também vejo isso como uma espécie de segurança para a criança codificadora interior que existe em mim. Use os mnemônicos que funcionam melhor para você.
Por exemplo, um loop deve funcionar em 4 a 8 iterações, se o sinalizador ultrapassar 1024 exceções.
escrever cada estrutura de loop com isso em mente, mais ou menos reduz a taxa de erro, independentemente de cada loop ter ou não uma proteção de segurança de loop.
O "
$i
por si só"for($i=0;$i<count($some_array);$i)
é uma sintaxe válida em PHP.Consulte o código abaixo:
Caixa de areia PHP
Pode ser melhor usar plugins PHP no seu editor/IDE que irão gerar uma sintaxe de loop for para você e então alterar a condição para sair do loop.