open core »

Tempo de execução máximo de um script PHP

Recentemente criei um script PHP que executava um processamento de dados intensivo. Ao correr esse script o processamento parava incompleto e obtia um erro do PHP:

Fatal error: Maximum execution time of 30 seconds exceeded in /localhost/script.php

Isto é um mecanismo de segurança do PHP. Por omissão limita a 30 segundos o tempo de execução de um script. Isto pode ser útil na maioria dos casos, mas neste específico não interessa pois fico com o processamento incompleto, tornando o inútil o script.

Para resolver este problema, o PHP tem uma função que se coloca no script desejado e permite definir o tempo limite para este executar:

<?php set_time_limit(0); ?>

Esta função recebe o parâmetro do tempo limite em segundos. Se for 0 é considerado sem limite. E deste modo resolve-se facilmente o problema que encontrei. Convém colocar essa função logo antes do pedaço de código que efectua o processamento intenso e depois desse código voltar a chamar a função com o valor 30 para ficar o restante código do script protegido contra longas execuções imprevistas.