socket_select Belirtilen soket dizileri üzerinde belirtilen zaman aşımı ile select() sistem çağrısını çalıştırır &reftitle.description; intfalsesocket_select arraynulloku arraynullyaz arraynulldiğer intnulltv_sec inttv_usec0 socket_select işlevi bağımsız değişken olarak soket dizileri alır ve durumları değişinceye kadar bekler. Bu soket dizileri BSD soketlerinden kaynaklanan bir kabulle dosya tanıtıcıları olarak da bilinir. İşleve birbirinden bağımsız üç çeşit soket dizisi belirtilebilir. &reftitle.parameters; oku Karakterlerin okunmaya hazır hale gelmesine kadar (başka bir deyişle, okumanın engellenmediği görülene kadar) dinlenecek soket dizisi. (Okunacak tek şeyin dosyasonu karakteri olduğu durumda socket_read sıfır uzunlukta bir dizge ile döner.) yaz Yazmanın engellenmediği görülene kadar (soket yazmaya hazır hale gelene kadar) dinlenecek soket dizisi. diğer Bu 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ı bağımsız değişkenini 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 bağımsız değişkenine 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. Zend motorundaki bir sınırlamadan dolayı, bir işleve gönderimli aktarılması gereken bir bağımsız değişken yerine işleve doğrudan &null; sabitini aktarmak mümkün değildir. Bu nedenle işleve değeri &null; olan geçici bir değişken veya son değeri bir değişken olan bir ifade aktarmalısınız: - <function>socket_select</function> ile &null; kullanımı ]]> &reftitle.returnvalues; 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. İşlev, 0 değerini anlamlı bir değer olarak döndürdüğünden == işleci ile yapılan bir sınama &true; ile sonuçlanacağından hata durumunu sınarken === işlecini kullanmalısınız: - <function>socket_select</function> sonucunu anlamak ]]> &reftitle.examples; - <function>socket_select</function> örneği 0) { /* En azından bir sokette bir şeyler olmuş */ } ?> ]]> &reftitle.notes; Bazı soket gerçeklenimlerinin çok dikkatli olmayı gerektirdiğini bilmeniz gereken 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 nesnelerini hiçbir diziye eklemeyin. socket_select döndükten sonra dizilerdeki tüm soketlere 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ğer dizisindeki soketlerin band dışı verilerle ilgili olduğu varsayılır. &reftitle.seealso; socket_read socket_write socket_last_error socket_strerror