Machen Sie PHP Socket_connect Timeout

Ich habe eine kleine Anwendung erstellt, um die Netzwerkverbindung zu analysieren. Es wird über einen Browser ausgeführt und stellt eine Verbindung zu einem lokalen PHP / Apache-Server her. Anschließend fordert es PHP auf, ein Ping-Paket über einen Raw-Socket zu senden. Das Problem ist, dass, wenn der Host, den ich anpingen möchte, nicht am Leben ist oder nicht auf Pings antwortet, wir keine Antwort vom Server erhalten.

Ich glaube, die Socket-Anfrage lebt, bis Apache neu gestartet wird. Ich habe in letzter Zeit gemischte Ergebnisse von meiner Anwendung erhalten und ich beschuldige Apache, zu viele Sockets verwendet zu haben. Derzeit habe ich das Timeout für den AJAX-Aufruf festgelegt und war damit zufrieden. Aber ich muss PHP wirklich dazu bringen, das Timeout durchzuführen, damit nicht 500.000 Sockets für einen nicht erreichbaren Host geöffnet sind.

Einige Beispielcode:

$sockconn = @socket_connect($socket, $target, null);
if(!$sockconn)
{
    $raw['error'] = socket_strerror(socket_last_error());
    $raw['status'] = false;
    return $raw;
}

Dies ist die Funktion, bei der keine Zeitüberschreitung auftritt. Ich muss es zum Timeout bringen. Auch die Ausführungszeit von PHP-Skripten wirkt sich NICHT auf Sockets aus.

Ich bin ahnungslos.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage