W3docs

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 di php.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; 0 significa nessun limite (ignorato quando max_execution_time non 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 configurazione browscap.ini è configurato; altrimenti restituisce 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
?>

Quando usarle?

AttivitàFunzione
Proteggere una funzionalità dietro una versione minima di PHPversion_compare()
Generare un nome file univoco temporaneouniqid()
Mettere in pausa tra chiamate API per rispettare un rate limitsleep() / usleep()
Consentire a un'importazione lunga di completarsi senza timeoutset_time_limit(), ignore_user_abort()
Eseguire il debug della configurazione PHP di un serverphpinfo(), phpversion(), php_uname()

Per approfondire gli argomenti correlati, consulta Funzioni PHP, Costanti PHP, Data e Ora in PHP e Stringhe PHP.

Esercitati

Pratica
Quali sono le cose principali che puoi trovare su PHP Miscellaneous dall'URL fornito?
Quali sono le cose principali che puoi trovare su PHP Miscellaneous dall'URL fornito?
Was this page helpful?