W3docs

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 und php.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; 0 bedeutet kein Limit (wird ignoriert, wenn max_execution_time nicht 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 die browscap.ini-Konfigurationsdatei eingerichtet ist; andernfalls gibt es false zurü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?

AufgabeFunktion
Ein Feature hinter einer Mindest-PHP-Version absichernversion_compare()
Einen temporären eindeutigen Dateinamen erzeugenuniqid()
Zwischen API-Aufrufen pausieren, um ein Rate-Limit einzuhaltensleep() / usleep()
Einen langen Import ohne Timeout abschließenset_time_limit(), ignore_user_abort()
Die PHP-Konfiguration eines Servers debuggenphpinfo(), phpversion(), php_uname()

Um tiefer in verwandte Themen einzutauchen, lesen Sie PHP Functions, PHP Constants, PHP Date and Time und PHP Strings.

Übungen

Übung
Was sind die wichtigsten Dinge, die Sie über PHP Miscellaneous aus der angegebenen URL erfahren können?
Was sind die wichtigsten Dinge, die Sie über PHP Miscellaneous aus der angegebenen URL erfahren können?
Was this page helpful?