socket_select în PHP

Comunicații de Rețea (Sockets) PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8 Q&A / Distribuie cod

Ghid complet pentru socket_select în PHP: multiplexare I/O non-blocantă pentru servirea a sute de conexiuni concurente într-un singur fir de execuție (Event Loop).

Sintaxă
socket_select(?array &$read, ?array &$write, ?array &$except, ?int $seconds, int $microseconds = 0): int|false

Ce face socket_select

Funcția socket_select monitorizează simultan tablouri de socket-uri pentru a vedea care dintre ele au date gata de citit sau sunt gata pentru scriere, fără a bloca scriptul. Este fundația arhitecturilor event-driven asincrone (cum ar fi ReactPHP sau Workerman).

Exemplu practic: Buclă non-blocantă de selectare
<?php
$clienti = [$server];

while (true) {
    $read = $clienti;
    $write = null;
    $except = null;

    // Așteptăm maxim 1 secundă pentru evenimente de I/O:
    $modificari = socket_select($read, $write, $except, 1);

    if ($modificari > 0) {
        foreach ($read as $sock) {
            if ($sock === $server) {
                // Avem o conexiune nouă la server:
                $nou = socket_accept($server);
                $clienti[] = $nou;
            } else {
                // Un client existent a trimis date:
                $date = socket_read($sock, 1024);
                if ($date === "" || $date === false) {
                    // Client deconectat
                    socket_close($sock);
                    $cheie = array_search($sock, $clienti);
                    unset($clienti[$cheie]);
                }
            }
        }
    }
}
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: socket_select

Ai o nelămurire despre utilizarea comenzii socket_select sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.