PHP Misc
Scopri le funzioni miscellanee di PHP per ispezionare l'ambiente, generare ID univoci e controllare i tempi di esecuzione.
Le funzioni miscellanee di PHP sono un insieme di funzioni integrate che non appartengono a nessuna categoria specifica come stringhe o array. Permettono principalmente allo script di esaminare il proprio ambiente: quale versione di PHP è in esecuzione, su quale sistema operativo risiede, quale utente possiede il processo, per quanto tempo è autorizzato a girare e così via. Si ricorre a queste funzioni quando è necessario ispezionare il runtime, eseguire il debug di una configurazione, generare un token univoco o controllare i tempi di esecuzione.
Questa pagina raggruppa le più utili di queste funzioni in base al loro utilizzo pratico, con esempi eseguibili per ciascun gruppo.
Ispezionare l'installazione di PHP
Quando qualcosa si comporta diversamente tra due server, la prima domanda è solitamente "quale versione e configurazione sto usando?" Queste funzioni rispondono a questa domanda.
phpinfo()— stampa un report HTML completo della build di PHP, delle estensioni caricate e delle impostazioni diphp.ini. Eseguila una volta su un nuovo server, poi elimina il file (espone molte informazioni sull'ambiente).phpversion()— restituisce solo la stringa di versione, ad es."8.2.10".php_uname()— restituisce informazioni sul sistema operativo su cui gira PHP.get_defined_constants()— restituisce un array di tutte le costanti definite (integrate e personalizzate).
<?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()ha senso solo quando l'output va a un browser, quindi non è mostrata nell'esempio eseguibile sopra.
Confrontare le versioni
Non confrontare mai le stringhe di versione con < o == — "8.10" è minore di "8.9" come stringa semplice. Usa version_compare(), che comprende la semantica delle versioni.
<?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)
?>Generare ID univoci
uniqid() costruisce un identificatore a partire dal tempo corrente in microsecondi. È utile per nomi di file temporanei e chiavi di cache-busting, ma non è crittograficamente sicuro — per token, password o qualsiasi cosa sensibile alla sicurezza, usa random_bytes() o bin2hex(random_bytes(16)).
<?php
echo uniqid(), "\n"; // e.g. 651f3a9c4b2d8
echo uniqid('user_', true), "\n"; // prefix + more entropy: user_651f3a9c4b2d81.23456789
?>Controllare i tempi di esecuzione e i limiti
Gli script a lunga esecuzione (importazioni, generatori di report) a volte devono essere messi in pausa o eseguire più a lungo del limite di tempo predefinito.
sleep($seconds)— mette in pausa lo script per interi secondi.usleep($microseconds)— mette in pausa per microsecondi (1 secondo = 1.000.000 µs).set_time_limit($seconds)— reimposta il tempo massimo di esecuzione;0significa nessun limite (ignorato quandomax_execution_timenon può essere modificato, ad es. in safe mode).ignore_user_abort(true)— continua l'esecuzione anche se il client si disconnette, utile per completare un'operazione in background.
<?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
?>Leggere le informazioni su processo e ambiente
Queste funzioni forniscono informazioni sul processo del sistema operativo in cui PHP è attualmente in esecuzione.
getmypid()— l'ID del processo dello script in esecuzione.get_current_user()— il proprietario del file dello script in esecuzione.getmyuid()/getmygid()— l'ID utente e l'ID gruppo del proprietario dello script (sui sistemi che li supportano).
<?php
echo "PID: ", getmypid(), "\n"; // e.g. PID: 4821
echo "User: ", get_current_user(), "\n";
?>Lavorare con il codice sorgente
Alcune funzioni gestiscono il sorgente PHP come testo — principalmente per pagine di documentazione e visualizzatori di codice.
highlight_file($filename)— visualizza il sorgente di un file con evidenziazione della sintassi HTML.highlight_string($code)— lo stesso, ma per una stringa di codice PHP.php_strip_whitespace($filename)— restituisce il sorgente di un file con commenti e spazi vuoti extra rimossi.get_browser()— restituisce i dettagli sul browser del visitatore, ma solo quando il file di configurazionebrowscap.iniè configurato; altrimenti restituiscefalse.
<?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 usarle?
| Attività | Funzione |
|---|---|
| Proteggere una funzionalità dietro una versione minima di PHP | version_compare() |
| Generare un nome file univoco temporaneo | uniqid() |
| Mettere in pausa tra chiamate API per rispettare un rate limit | sleep() / usleep() |
| Consentire a un'importazione lunga di completarsi senza timeout | set_time_limit(), ignore_user_abort() |
| Eseguire il debug della configurazione PHP di un server | phpinfo(), phpversion(), php_uname() |
Per approfondire gli argomenti correlati, consulta Funzioni PHP, Costanti PHP, Data e Ora in PHP e Stringhe PHP.