or que uma função infinitamente recursiva no PHP causa um segfaul
Uma pergunta hipotética para todos vocês mastigar ...
ecentemente, respondi a outra pergunta sobre SO, em que um script PHP estava em falha, e isso me lembrou algo que sempre me perguntei; então, vamos ver se alguém pode esclarecer iss
Considere o seguinte
<?php
function segfault ($i = 1) {
echo "$i\n";
segfault($i + 1);
}
segfault();
?>
Obviamente, essa função (inútil) faz loop infinitamente. E, eventualmente, ficará sem memória porque cada chamada para a função é executada antes que a anterior seja concluída. Mais ou menos como uma bomba de garfo sem o garf
Mas ... eventualmente, nas plataformas POSIX, o script morrerá com o SIGSEGV (ele também morre no Windows, mas com mais graça - até onde minhas habilidades de depuração de baixo nível extremamente limitadas podem dizer). O número de loops varia de acordo com a configuração do sistema (memória alocada para PHP, 32 bits / 64 bits, etc etc) e o sistema operacional, mas minha verdadeira pergunta é: por que isso acontece com um segfaul
É assim que o PHP lida com erros de "falta de memória"? Certamente deve haver uma maneira mais graciosa de lidar com isso? Isso é um bug no mecanismo do Zend? Existe alguma maneira de isso ser controlado ou tratado de maneira mais elegante a partir de um script PH Existe alguma configuração que geralmente controla esse número máximo de chamadas recursivas que podem ser feitas em uma funçã