(PHP 4 >= 4.1.0, PHP 5, PHP 7)
socket_select — Belirtilen soket dizileri üzerinde belirtilen zaman aşımı ile select() sistem çağrısını çalıştırır
&$oku
   , array &$yaz
   , array &$diğer
   , int $tv_sec
   [, int $tv_usec = 0
  ] )socket_select() işlevi değiştirge olarak soket dizileri alır ve durumları değişinceye kadar bekler. Soket özkaynakları BSD soketlerinden kaynaklanan bir kabulle dosya tanıtıcıları olarak da bilinir. İşleve birbirinden bağımsız üç çeşit soket özkaynağı belirtilebilir.
okuKarakterlerin okunmaya hazır hale gelmesine kadar (başka bir deyişle, okumanın engellenmediği görülene kadar) dinlenecek soket özkaynakları dizisi. (Okunacak tek şeyin dosyasonu karakteri olduğu durumda socket_read() sıfır uzunlukta bir dizge ile döner.)
yazYazmanın engellenmediği görülene kadar (soket yazmaya hazır hale gelene kadar) dinlenecek soket özkaynakları dizisi.
diğerBu dizideki soketler olağan dışı durumlara göre denetlenir.
tv_sec
       Saniye cinsinden zaman aşımı. tv_sec ve
       tv_usec birlikte select() sistem çağrısının
       zamanaşımı değiştirgesini oluşturur.
       zamanaşımı, socket_select()
       dönmeden önce beklenecek azami süreyi belirler.
       tv_sec sıfır olabilir; bu durumda
       socket_select() beklemeden döner. Çağrı yinelemek
       için yararlıdır. tv_sec NULL olduğu takdirde
       (zaman aşımı yok), socket_select() sonsuza kadar
       bekleyebilir.
      
tv_usec
       Mikrosaniye cinsinden zaman aşımı. Ayrıntılar için
       tv_sec değiştirgesine bakınız.
      
Dönüşte, soket özkaynaklarının durumlarını belirtmek için dizilerde değişiklik yapılır.
   socket_select() işlevine üç diziyi de aktarmak zorunda
   değilsiniz. Kullanmadığınız dizileri boş bırakabilir veya bir dizi yerine
   NULL belirtebilirsiniz. Ayrıca, bu dizilerin gönderimli aktarılmaları
   gerektiğine de dikkat ediniz; socket_select() işlevi
   dönerken soket durumlarını yansıtacak şekilde bu dizilerde değişiklik
   yapar.
  
Bilginize:
Zend motorundaki bir sınırlamadan dolayı, bir işleve gönderimli aktarılması gereken bir değiştirge yerine işleve doğrudan
NULLsabitini aktarmak mümkün değildir. Bu nedenle işleve değeriNULLolan geçici bir değişken veya son değeri bir değişken olan bir ifade aktarmalısınız:Örnek 1 - socket_select() ile
NULLkullanımı<?php
$diger = NULL;
socket_select($oku, $yaz, $diger, 0);
?>
   Başarı durumunda socket_select(), değişiklik yapılan
   soketlerin sayısını döndürür. Eğer hiçbir değişiklik olmaksızın zaman
   aşımı dolmuşsa işlev 0 döndürür. Bir hata durumunda
   FALSE döner. Hata kodu socket_last_error() ile
   alınabilir.
  
Bilginize:
İşlev, 0 değerini anlamlı bir değer olarak döndürdüğünden == işleci ile yapılan bir sınama
TRUEile sonuçlanacağından hata durumunu sınarken === işlecini kullanmalısınız:Örnek 2 - socket_select() sonucunu anlamak
<?php
$e = NULL;
if (false === socket_select($o, $y, $d, 0)) {
echo "socket_select() başarısız oldu; sebep: " .
socket_strerror(socket_last_error()) . "\n";
}
?>
Örnek 3 - socket_select() örneği
<?php
/* Oku dizisini hazırlayalım */
$oku   = array($soket1, $soket2);
$yaz  = NULL;
$diger = NULL;
$degisen_soket_sayısı = socket_select($oku, $yaz, $diger, 0);
if ($degisen_soket_sayısı === false) {
    /* Hata işlemleri */
} else if ($degisen_soket_sayısı > 0) {
    /* En azından bir sokette bir şeyler olmuş */
}
?>
Bilginize:
Bazı soket gerçeklenimlerinin çok dikkatli olmayı gerektirdiğini bilmenizde yarar var. Bir kaç temel kural:
- socket_select() işlevini daima zaman aşımsız kullanmaya çalışın. İşe yarar bir veri yoksa betiğiniz hiçbir işlem yapmamalıdır. Zaman aşımlarına bağımlı bir kod taşınabilir değildir ve hata ayıklamak çok zor olur.
 - socket_select() çağrısından sonra üzerinde hiçbir işlem yapmayacağınız soket özkaynaklarını hiçbir diziye eklemeyin. socket_select() döndükten sonra tüm soket özkaynaklarına mutlaka bakılmalıdır. Yazmaya hazır soketlere yazılmalı, okunmaya hazır soketler okunmalıdır.
 - Diziden dönen bir sokete oku veya yaz işlemi yapacaksanız verinin tamamını okumak veya yazmak zorunda değilsiniz. Sadece bir bayt okumaya veya yazmaya bile hazır olmalısınız.
 - Hemen tüm soket gerçeklenimlerinde
 diğerdizisindeki soketlerin band dışı verilerle ilgili olduğu varsayılır.