Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie czy zmienna zawiera prawidłowy stream socket
Forum PHP.pl > Forum > PHP
kiler129
Witajcie!
Pisząc serwer w PHP natknąłem się na mały problem - jak sprawdzić czy dany zasób (nadal) jest streamem?
Mianowicie chodzi o to, że używam systemowy "budzik" czyli stream_select() wraz z timeoutem na 120 sekund, jednakże po "wybudzeniu" dostaję dwie tablice - read i write - gdy jednak obrobię write może się okazać, że sockety będące we write są już nieaktualne (zostały rozłączone w procesie sprawdzania w read).
Może brzmi to chaotycznie ale kod powinien rozjaśnić sprawę:

Kod
$read = $write = $clientsSockets;
$modFd = stream_select($read, $write, $_e=NULL, 120);
foreach($read as $readCl) {
  if([jakis warunek]) fclose($readCl);
}

foreach($write as $writeCl) echo stream_socket_get_name($writeCl, true); //Błąd jesli warunek [jakis warunek] zostal spelniony]


Chciałbym zaniechać akcji (w tym wypadku pobrania nazwy) gdy socket już nie jest socketem.
Quadina
Nie jestem pewien, ale czy nie załatwi sprawy funkcja is_resource() przed drukowaniem nazwy?

Sądząc po pierwszym przykładzie z dokumentacji funkcji http://php.net/manual/en/function.stream-socket-get-name.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.