PHP Misc
Conheça as funções diversas do PHP usadas para inspecionar o ambiente, gerar IDs únicos e controlar o tempo de execução.
As funções diversas do PHP são um conjunto de funções integradas que não pertencem a uma categoria específica como strings ou arrays. Elas permitem que o seu script examine o próprio ambiente: qual versão do PHP está em execução, em qual sistema operacional ele está, qual usuário é o dono do processo, por quanto tempo é permitido rodar, entre outras informações. Você as utiliza quando precisa inspecionar o runtime, depurar uma configuração, gerar um token único ou controlar o tempo de execução.
Esta página agrupa as funções mais úteis conforme sua finalidade prática, com exemplos executáveis para cada grupo.
Inspecionando a instalação do PHP
Quando algo se comporta de forma diferente entre dois servidores, a primeira pergunta costuma ser "qual versão e configuração estou usando?" Essas funções respondem a isso.
phpinfo()— imprime um relatório HTML completo do build do PHP, extensões carregadas e configurações dophp.ini. Execute uma vez em um servidor novo e depois delete o arquivo (ele expõe muito sobre o seu ambiente).phpversion()— retorna apenas a string de versão, por exemplo"8.2.10".php_uname()— retorna informações sobre o sistema operacional em que o PHP está rodando.get_defined_constants()— retorna um array com todas as constantes definidas (as integradas e as suas próprias).
<?php
echo phpversion(), "\n"; // 8.2.10
echo php_uname('s'), "\n"; // e.g. "Linux" ('s' = OS name only)
// Did the developer remember to define this config constant?
defined('APP_ENV') or define('APP_ENV', 'production');
$constants = get_defined_constants(true); // grouped by category
echo APP_ENV, "\n"; // production
?>
phpinfo()só faz sentido quando a saída vai para um navegador, por isso não está no exemplo executável acima.
Comparando versões
Nunca compare strings de versão com < ou == — "8.10" é menor que "8.9" como uma string simples. Use version_compare(), que entende a semântica de versões.
<?php
// Is the running PHP new enough for a feature?
if (version_compare(PHP_VERSION, '8.0.0', '>=')) {
echo "Named arguments are available.\n";
}
// Two-argument form returns -1, 0, or 1
echo version_compare('1.9.0', '1.10.0'), "\n"; // -1 (1.9 is older)
?>Gerando IDs únicos
uniqid() cria um identificador baseado no tempo atual em microssegundos. É útil para nomes de arquivos temporários e chaves de cache-busting, mas não é criptograficamente seguro — para tokens, senhas ou qualquer coisa sensível à segurança, use random_bytes() ou bin2hex(random_bytes(16)).
<?php
echo uniqid(), "\n"; // e.g. 651f3a9c4b2d8
echo uniqid('user_', true), "\n"; // prefix + more entropy: user_651f3a9c4b2d81.23456789
?>Controlando tempo de execução e limites
Scripts de longa duração (importações, geradores de relatórios) às vezes precisam pausar ou rodar por mais tempo do que o limite padrão.
sleep($seconds)— pausa o script por segundos inteiros.usleep($microseconds)— pausa por microssegundos (1 segundo = 1.000.000 µs).set_time_limit($seconds)— redefine o tempo máximo de execução;0significa sem limite (ignorado quandomax_execution_timenão pode ser alterado, por exemplo no modo seguro).ignore_user_abort(true)— continua executando mesmo que o cliente se desconecte; útil para finalizar uma tarefa em segundo plano.
<?php
$start = time();
sleep(1); // pause 1 second
usleep(500000); // pause another half second
echo "Paused for about ", time() - $start, "s\n"; // Paused for about 1s
set_time_limit(30); // allow up to 30 seconds for the rest of the script
?>Lendo informações de processo e ambiente
Essas funções reportam sobre o processo do sistema operacional em que o PHP está sendo executado.
getmypid()— o ID do processo do script em execução.get_current_user()— o proprietário do arquivo do script em execução.getmyuid()/getmygid()— o ID de usuário e o ID de grupo do proprietário do script (em sistemas que os suportam).
<?php
echo "PID: ", getmypid(), "\n"; // e.g. PID: 4821
echo "User: ", get_current_user(), "\n";
?>Trabalhando com código-fonte
Algumas funções lidam com o código-fonte PHP como texto — principalmente para páginas de documentação e visualizadores de código.
highlight_file($filename)— exibe o código-fonte de um arquivo com realce de sintaxe HTML.highlight_string($code)— o mesmo, mas para uma string de código PHP.php_strip_whitespace($filename)— retorna o código-fonte de um arquivo com comentários e espaços em branco extras removidos.get_browser()— retorna detalhes sobre o navegador do visitante, mas somente quando o arquivo de configuraçãobrowscap.iniestiver configurado; caso contrário, retornafalse.
<?php
$code = "<?php echo 'Hello'; // a comment ?>";
// highlight_string can also return the markup instead of printing it
$html = highlight_string($code, true);
echo $html, "\n"; // a <code>...</code> block with colorized <span> tags
?>Quando devo usar essas funções?
| Tarefa | Função |
|---|---|
| Proteger um recurso com base em uma versão mínima do PHP | version_compare() |
| Gerar um nome de arquivo único descartável | uniqid() |
| Pausar entre chamadas de API para respeitar um limite de taxa | sleep() / usleep() |
| Permitir que uma importação longa termine sem expirar | set_time_limit(), ignore_user_abort() |
| Depurar a configuração PHP de um servidor | phpinfo(), phpversion(), php_uname() |
Para se aprofundar em tópicos relacionados, consulte Funções PHP, Constantes PHP, Data e Hora no PHP e Strings PHP.