Socket_read bir zaman aşımını ayarlamak

4 Cevap php

Ben nasıl bir socket_read çağrı üzerine bir zaman aşımı ayarlayabilirsiniz merak ediyorum? Çağıran ilk kez socket_read, veri gönderildiğinde kadar bekler ve hiçbir veri 5 saniye içinde gönderilir eğer kapatma bağlantısını istiyorum. Herhangi bir Yardım? Ben zaten hiçbir şans ile SO_RCVTIMEO çalıştı.

Ben bağlıyken ben veri dinleyin ve sonra onunla bir şeyler yapmak, daha sonra socket_create() ile bir yuva oluşturmak ve bağlantıları için üzerine dinliyorum. Zaman aşımı çarptığında, ben socket_shutdown() çalıştırın ve ardından socket_close() istiyorum.

4 Cevap

Ben bir socket_listen yaptım ve sonra içinde zaman () 2 ve nonblock seti ve socket_read (ile bir süre döngü) ile manuel zaman aşımı yaptı. Tamam çalışıyor gibi görünüyor. Herhangi alternatifler?

GÜNCELLEME: Ben bloklanamayan olarak yuva kurma ve sonra socket_listen kullanarak gerekli zaman aşımı sağlanan bulundu.

Eğer socket_set_option SO_RCVTIMEO ile denedim

Giriş işlemleri için zaman aşımı değeri.

Bu soket 5 sn zaman aşımını ayarlayın.

socket_set_option($socket,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>5, "usec"=>0));