Signatur
Beschreibung
imap_timeout() ermöglicht es, Timeout-Werte für IMAP-Verbindungen zu steuern. Je nach übergebenem $timeout_type wird der Timeout für das Öffnen, Lesen, Schreiben oder Schließen einer IMAP-Verbindung gesetzt oder abgefragt.
Wird $timeout weggelassen oder auf -1 gesetzt, gibt die Funktion den aktuell konfigurierten Timeout-Wert (in Sekunden) für den angegebenen Typ zurück. Wird ein positiver Wert übergeben, setzt die Funktion den Timeout entsprechend und gibt bei Erfolg true zurück.
Die möglichen Konstanten für $timeout_type sind: IMAP_OPENTIMEOUT, IMAP_READTIMEOUT, IMAP_WRITETIMEOUT und IMAP_CLOSETIMEOUT. Diese steuern jeweils die maximale Zeit in Sekunden, die für die entsprechende Operation gewartet wird.
Die Funktion ist besonders nützlich, wenn IMAP-Server langsam reagieren oder Verbindungen in instabilen Netzwerken verwendet werden, um Hänger in PHP-Skripten zu vermeiden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $timeout_type Pflicht | int | Gibt den Typ des Timeouts an. Gültige Werte sind die Konstanten IMAP_OPENTIMEOUT, IMAP_READTIMEOUT, IMAP_WRITETIMEOUT und IMAP_CLOSETIMEOUT. |
|
| $timeout | int | -1 | Der neue Timeout-Wert in Sekunden. Wird -1 übergeben oder der Parameter weggelassen, wird der aktuelle Wert abgefragt statt gesetzt. |
Rückgabewert
$timeout nicht angegeben oder -1 ist, wird der aktuelle Timeout-Wert (in Sekunden) als int zurückgegeben. Wenn ein neuer Wert gesetzt wird, gibt die Funktion true (als 1) bei Erfolg oder false bei einem Fehler zurück.Beispiele
Aktuellen Read-Timeout abfragen
<?php
// Aktuellen IMAP Read-Timeout abfragen
$currentTimeout = imap_timeout(IMAP_READTIMEOUT);
echo "Aktueller Read-Timeout: " . $currentTimeout . " Sekunde(n)\n";
Timeouts vor IMAP-Verbindung setzen
<?php
// Timeouts auf robuste Werte setzen, bevor eine IMAP-Verbindung geöffnet wird
imap_timeout(IMAP_OPENTIMEOUT, 10); // Verbindungsaufbau max. 10 Sekunden
imap_timeout(IMAP_READTIMEOUT, 30); // Lesen max. 30 Sekunden
imap_timeout(IMAP_WRITETIMEOUT, 15); // Schreiben max. 15 Sekunden
imap_timeout(IMAP_CLOSETIMEOUT, 5); // Verbindung schließen max. 5 Sekunden
$mailbox = imap_open(
'{imap.example.com:993/imap/ssl}INBOX',
'user@example.com',
'geheimesPasswort'
);
if ($mailbox === false) {
echo "Verbindung fehlgeschlagen: " . imap_last_error() . "\n";
} else {
$anzahl = imap_num_msg($mailbox);
echo "Anzahl der E-Mails im Posteingang: " . $anzahl . "\n";
imap_close($mailbox);
}
// Wichtig · Fallstricke
Hinweis zur IMAP-Extension: Die Funktion ist Teil der imap-Extension, die ab PHP 8.4 als PECL-Paket ausgelagert wurde. Ab PHP 8.4 muss die Extension separat installiert werden.
Rückgabewert beim Setzen: Beim Setzen eines neuen Timeouts gibt die Funktion im Erfolgsfall true zurück, was als Integer 1 ausgegeben wird. Achte darauf, den Rückgabewert mit === false zu prüfen, da 0 ein gültiger Timeout-Wert sein könnte.
Plattformabhängigkeit: Die tatsächliche Wirksamkeit der Timeouts kann je nach Betriebssystem und verwendeter c-client-Bibliothek variieren. Nicht alle Timeout-Typen sind auf allen Plattformen vollständig unterstützt.