W3docs

PHP Misc

Exploramos las funciones misceláneas de PHP para inspeccionar el entorno, generar IDs únicos y controlar el tiempo de ejecución.

Las funciones misceláneas de PHP son un conjunto de funciones integradas que no pertenecen a ninguna categoría específica como cadenas o arrays. En su mayoría permiten que tu script examine su propio entorno: qué versión de PHP está en ejecución, en qué sistema operativo se encuentra, qué usuario es dueño del proceso, cuánto tiempo tiene permitido ejecutarse, y así sucesivamente. Se recurre a ellas cuando necesitas inspeccionar el entorno de ejecución, depurar una configuración, generar un token único o controlar el tiempo de ejecución.

Esta página agrupa las más útiles de estas funciones según el uso que se les daría, con ejemplos ejecutables para cada grupo.

Inspeccionar la instalación de PHP

Cuando algo se comporta de manera diferente entre dos servidores, la primera pregunta suele ser "¿qué versión y configuración tengo aquí?" Estas funciones responden esa pregunta.

  • phpinfo() — imprime un informe HTML completo sobre la compilación de PHP, las extensiones cargadas y la configuración de php.ini. Ejecútala una vez en un servidor nuevo y luego elimina el archivo (expone mucho sobre tu entorno).
  • phpversion() — devuelve solo la cadena de versión, p. ej. "8.2.10".
  • php_uname() — devuelve información sobre el sistema operativo en el que corre PHP.
  • get_defined_constants() — devuelve un array de cada constante definida (las integradas más las tuyas propias).
<?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() solo tiene sentido cuando la salida va a un navegador, por lo que no se muestra en el ejemplo ejecutable anterior.

Comparar versiones

Nunca compares cadenas de versión con < o =="8.10" es menor que "8.9" como cadena simple. Usa version_compare(), que entiende la semántica de versiones.

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

Generar IDs únicos

uniqid() construye un identificador a partir del tiempo en microsegundos actual. Es útil para nombres de archivos temporales y claves de caché, pero no es criptográficamente seguro — para tokens, contraseñas o cualquier uso sensible a la seguridad, usa random_bytes() o bin2hex(random_bytes(16)) en su lugar.

<?php
echo uniqid(), "\n";              // e.g. 651f3a9c4b2d8
echo uniqid('user_', true), "\n"; // prefix + more entropy: user_651f3a9c4b2d81.23456789
?>

Controlar el tiempo y los límites de ejecución

Los scripts de larga ejecución (importaciones, generadores de informes) a veces necesitan hacer una pausa o ejecutarse más tiempo que el límite predeterminado.

  • sleep($seconds) — pausa el script durante segundos completos.
  • usleep($microseconds) — pausa durante microsegundos (1 segundo = 1 000 000 µs).
  • set_time_limit($seconds) — reinicia el tiempo máximo de ejecución; 0 significa sin límite (ignorado cuando max_execution_time no puede cambiarse, p. ej. en modo seguro).
  • ignore_user_abort(true) — continúa la ejecución aunque el cliente se desconecte, útil para terminar una tarea en 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
?>

Leer información del proceso y del entorno

Estas funciones informan sobre el proceso del sistema operativo dentro del cual corre PHP actualmente.

  • getmypid() — el ID del proceso del script en ejecución.
  • get_current_user() — el propietario del archivo del script en ejecución.
  • getmyuid() / getmygid() — el ID de usuario y el ID de grupo del propietario del script (en sistemas que los soportan).
<?php
echo "PID: ", getmypid(), "\n";        // e.g. PID: 4821
echo "User: ", get_current_user(), "\n";
?>

Trabajar con código fuente

Unas pocas funciones tratan el código fuente de PHP como texto — principalmente para páginas de documentación y visores de código.

  • highlight_file($filename) — genera la fuente de un archivo con resaltado de sintaxis HTML.
  • highlight_string($code) — lo mismo, pero para una cadena de código PHP.
  • php_strip_whitespace($filename) — devuelve la fuente de un archivo con comentarios y espacios en blanco adicionales eliminados.
  • get_browser() — devuelve detalles sobre el navegador del visitante, pero solo cuando el archivo de configuración browscap.ini está configurado; de lo contrario devuelve false.
<?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
?>

¿Cuándo usaría estas funciones?

TareaFunción
Proteger una funcionalidad detrás de una versión mínima de PHPversion_compare()
Generar un nombre de archivo único desechableuniqid()
Hacer una pausa entre llamadas a la API para respetar un límite de velocidadsleep() / usleep()
Permitir que una importación larga termine sin agotar el tiemposet_time_limit(), ignore_user_abort()
Depurar la configuración de PHP de un servidorphpinfo(), phpversion(), php_uname()

Para profundizar en temas relacionados, consulta Funciones PHP, Constantes PHP, Fecha y Hora en PHP y Cadenas PHP.

Práctica

Práctica
¿Cuáles son las cosas clave que puedes encontrar sobre PHP Miscellaneous en la URL dada?
¿Cuáles son las cosas clave que puedes encontrar sobre PHP Miscellaneous en la URL dada?
Was this page helpful?