Start · Sprachen · PHP · Referenz · imap_timeout

imap_timeout

Funktion

Setzt oder liest einen IMAP-Timeout-Wert für einen bestimmten Verbindungstyp.

seit PHP 4.3.3 Kategorie: http

Signatur

imap_timeout(int $timeout_type, int $timeout = -1): int|false

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

Typ
int|false
Beschreibung
Wenn $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";
Aktueller Read-Timeout: 15 Sekunde(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);
}
Anzahl der E-Mails im Posteingang: 42

// 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.