PHP Misc
Wir besprechen die verschiedenen PHP-Miscellaneous-Funktionen, die für unterschiedliche Zwecke eingesetzt werden.
PHPs Miscellaneous-Funktionen sind eine Sammlung von Built-ins, die zu keiner einzelnen Kategorie wie Strings oder Arrays gehören. Sie ermöglichen es Ihrem Skript hauptsächlich, die eigene Umgebung zu untersuchen: Welche PHP-Version läuft gerade, auf welchem Betriebssystem, welchem Benutzer gehört der Prozess, wie viel Zeit darf er laufen, und so weiter. Sie greifen auf diese Funktionen zurück, wenn Sie die Laufzeitumgebung inspizieren, eine Konfiguration debuggen, ein eindeutiges Token erzeugen oder die Ausführungszeit steuern möchten.
Diese Seite gruppiert die nützlichsten dieser Funktionen nach ihrem Verwendungszweck und enthält ausführbare Beispiele für jede Gruppe.
Die PHP-Installation untersuchen
Wenn sich ein Verhalten zwischen zwei Servern unterscheidet, lautet die erste Frage meist: „Welche Version und Konfiguration läuft hier?" Diese Funktionen beantworten das.
phpinfo()— gibt einen vollständigen HTML-Bericht über den PHP-Build, geladene Erweiterungen undphp.ini-Einstellungen aus. Führen Sie es einmal auf einem neuen Server aus und löschen Sie die Datei danach (sie gibt viel über Ihre Umgebung preis).phpversion()— gibt nur den Versionsstring zurück, z. B."8.2.10".php_uname()— gibt Informationen über das Betriebssystem zurück, auf dem PHP läuft.get_defined_constants()— gibt ein Array aller definierten Konstanten zurück (integrierte sowie eigene).
<?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()ergibt nur Sinn, wenn die Ausgabe an einen Browser geht – deshalb ist es im obigen ausführbaren Beispiel nicht enthalten.
Versionen vergleichen
Vergleichen Sie Versionsstrings niemals mit < oder == – "8.10" ist als einfacher String kleiner als "8.9". Verwenden Sie version_compare(), das die Versionssemantik versteht.
<?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)
?>Eindeutige IDs erzeugen
uniqid() erstellt einen Bezeichner aus der aktuellen Mikrosekundenzeit. Das ist praktisch für temporäre Dateinamen und Cache-Busting-Schlüssel, ist jedoch nicht kryptografisch sicher – für Tokens, Passwörter oder alles sicherheitskritische verwenden Sie stattdessen random_bytes() oder bin2hex(random_bytes(16)).
<?php
echo uniqid(), "\n"; // e.g. 651f3a9c4b2d8
echo uniqid('user_', true), "\n"; // prefix + more entropy: user_651f3a9c4b2d81.23456789
?>Ausführungszeit und -grenzen steuern
Lang laufende Skripte (Importe, Berichtsgeneratoren) müssen manchmal pausieren oder länger laufen als das standardmäßige Zeitlimit.
sleep($seconds)— pausiert das Skript für ganze Sekunden.usleep($microseconds)— pausiert für Mikrosekunden (1 Sekunde = 1.000.000 µs).set_time_limit($seconds)— setzt die maximale Ausführungszeit zurück;0bedeutet kein Limit (wird ignoriert, wennmax_execution_timenicht geändert werden kann, z. B. im Safe Mode).ignore_user_abort(true)— läuft weiter, auch wenn der Client die Verbindung trennt; nützlich, um einen Hintergrundtask abzuschließen.
<?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
?>Prozess- und Umgebungsinformationen auslesen
Diese Funktionen liefern Informationen über den OS-Prozess, in dem PHP aktuell läuft.
getmypid()— die Prozess-ID des laufenden Skripts.get_current_user()— der Eigentümer der laufenden Skriptdatei.getmyuid()/getmygid()— die Benutzer-ID und Gruppen-ID des Skript-Eigentümers (auf Systemen, die dies unterstützen).
<?php
echo "PID: ", getmypid(), "\n"; // e.g. PID: 4821
echo "User: ", get_current_user(), "\n";
?>Mit Quellcode arbeiten
Einige Funktionen befassen sich mit PHP-Quellcode als Text – hauptsächlich für Dokumentationsseiten und Code-Viewer.
highlight_file($filename)— gibt den Quellcode einer Datei mit HTML-Syntaxhervorhebung aus.highlight_string($code)— dasselbe, aber für einen String mit PHP-Code.php_strip_whitespace($filename)— gibt den Quellcode einer Datei zurück, bei dem Kommentare und überflüssige Leerzeichen entfernt wurden.get_browser()— gibt Details zum Browser des Besuchers zurück, jedoch nur wenn diebrowscap.ini-Konfigurationsdatei eingerichtet ist; andernfalls gibt esfalsezurück.
<?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
?>Wann würde ich diese verwenden?
| Aufgabe | Funktion |
|---|---|
| Ein Feature hinter einer Mindest-PHP-Version absichern | version_compare() |
| Einen temporären eindeutigen Dateinamen erzeugen | uniqid() |
| Zwischen API-Aufrufen pausieren, um ein Rate-Limit einzuhalten | sleep() / usleep() |
| Einen langen Import ohne Timeout abschließen | set_time_limit(), ignore_user_abort() |
| Die PHP-Konfiguration eines Servers debuggen | phpinfo(), phpversion(), php_uname() |
Um tiefer in verwandte Themen einzutauchen, lesen Sie PHP Functions, PHP Constants, PHP Date and Time und PHP Strings.