Beware, when using this function within a loop (i.e. a demon with a socket). The socket_accept(), for example, emits a warning each time there is no incoming connection available to be read. My php error log file got huge in a matter of seconds, eventually crashing the server.
Of course, i used the @ before the function to take care of that problem.
[EDITOR: One can (and should) use socket_select to detect a new connection on a socket (it's a "readable" event)]
socket_set_nonblock
(PHP 4 >= 4.1.0, PHP 5)
socket_set_nonblock — Belirtilen dosya tanıtıcısı için beklememe kipini etkinleştirir
Açıklama
$soket
)
soket ile belirtilen sokete
O_NONBLOCK seçeneğini atar (beklememe kipini etkin
kılar; başka bir deyişle soketi engellenmeyen kipe sokar).
Bir engellenmeyen soket üzerinde yapılan işlemler (bağlanma, kabul, alım, gönderim gibi) sırasında bir sinyal gelmedikçe, okunacak veri yoksa veya veri yazılamıyorsa betik işlemin başlamasını beklemez ve böyle bir durumda ilgili işlev çağrısı (bu işlev değil) başarısız olur.
Değiştirgeler
-
soket -
socket_create() veya socket_accept() ile oluşturulmuş geçerli bir soket özkaynağı.
Dönen Değerler
Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.
Örnekler
Örnek 1 - socket_set_nonblock() örneği
<?php
$soket = socket_create_listen(1223);
socket_set_nonblock($soket);
socket_accept($soket);
?>
Bu örnekte, tüm arabirimlerin 1223. portunda bir dinleme soketi
oluşturulmakta ve soket beklememe kipine
(O_NONBLOCK) alınmaktadır. Bu anda bekleyen bir
bağlantı yoksa socket_accept() bir zamanaşımı
beklemeksizin başarısız olur.
Ayrıca Bakınız
- socket_set_block() - Soketi engelleme kipine sokar
- socket_set_option() - Soketle ilgili seçenekleri belirler
