PHP 7.4.9 Released!

socket_get_option

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

socket_get_optionSoketle ilgili bir seçeneğin değerini döndürür

Açıklama

socket_get_option ( resource $soket , int $seviye , int $seçenek ) : mixed

Belirtilen soket için ismi seçenek ile belirtilen seçeneğin değerini döndürür.

Değiştirgeler

soket

socket_create() veya socket_accept() ile oluşturulmuş geçerli bir soket özkaynağı.

seviye

Seçeneğin geçerli olacağı protokol seviyesi. Örneğin soket seviyesindeki seçenekleri almak için bu değiştirgede SOL_SOCKET kullanılabilirdi. TCP gibi diğer seviyeler, seviyenin protokol numarası belirtilerek kullanılabilir. Protokol numaralarını getprotobyname() işleviyle alabilirsiniz.

seçenek
Olası soket seçenekleri
Seçenek Açıklama Türü
SO_DEBUG Hata ayıklama bilgilerinin kaydelip kaydedilmeyeceğini belirtir. int
SO_BROADCAST Yayın iletilerinin aktarılılp aktarılmayacağını belirtir. int
SO_REUSEADDR Yerel adresin yeniden kullanılabilir olup olmadığını belirtir. int
SO_KEEPALIVE Belirli aralıklarla ileti aktarımlarında bağlantının kalıcı olup olmayacağını belirtir. Eğer bağlı soket bu iletileri yanıtlamakta başarısız olursa bağlantı kopar ve sokete yazan sürece bir SIGPIPE sinyali gönderilir. int
SO_LINGER

Veri mevcut olduğunda socket_close() işlevinin bekletilip bekletilmeyeceğini belirtir. Öntanımlı olarak soket kapatılacağı zaman gönderilmemiş tüm veri gönderilmeye çalışılır. Soketin bağlantı yönelimli olduğu durumda socket_close() karşı ucun alındısını bekler.

Eğer l_onoff sıfırdan farklı ve l_linger sıfırsa gönderilmemiş tüm veri iptal edilir ve soketin bağlantı yönelimli olması durumunda karşı uca bir RST (sıfırla) gönderilir.

Diğer taraftan, l_onoff ve l_linger'in ikisi de sıfırdan farklıysa tüm veri gönderilinceye veya l_linger ile belirtilen süre dolana kadar socket_close() bekletilir. Soket engellenmeyen kipte ise socket_close() başarısız olup bir hata döndürür.

array. Dizi iki anahtar içerir: l_onoff ve l_linger.
SO_OOBINLINE Soketin band dışı veriyi hatta bırakıp bırakmayacağını belirtir. int
SO_SNDBUF Gönderim tamponunun boyunu belirtir. int
SO_RCVBUF Alım tamponunun boyunu belirtir. int
SO_ERROR Hata durumu hakkında bilgi verip hata kodunu siler. int (socket_set_option() ile atanamayabilir.)
SO_TYPE Soketin türünü belirtir (SOCK_STREAM gibi). int (socket_set_option() ile atanamayabilir.)
SO_DONTROUTE Giden iletilerin standart yönlendirme oluşumlarını es geçip geçmeyeceğini belirtir. int
SO_RCVLOWAT Soket girdi işlemlerinde işlenecek en küçük bayt sayısını belirtir. int
SO_RCVTIMEO Soket girdi işlemleri için zaman aşımı değerini belirtir. array. Dizi iki anahtar içerir: Zaman aşımının saniye parçası sec, mikrosaniye parçası usec anahtarına konur.
SO_SNDTIMEO Akış denetiminin veri gönderimini engellemesi nedeniyle bir çıktı işlevinin bekletileceği azami süreyi belirtir. array. Dizi iki anahtar içerir: Zaman aşımının saniye parçası sec, mikrosaniye parçası usec anahtarına konur.
SO_SNDLOWAT Soket çıktı işlemlerinde işlenecek en küçük bayt sayısını belirtir. int
TCP_NODELAY Nagle TCP algoritmasının iptal edilmiş olup olmadığını belirtir. int

Dönen Değerler

Hata durumunda FALSE yoksa belirtilen seçeneğin değerini döndürür.

Örnekler

Örnek 1 - socket_get_option() örneği

<?php
$socket 
socket_create_listen(1223);

$linger = array('l_linger' => 1'l_onoff' => 1);
socket_set_option($socketSOL_SOCKETSO_LINGER$linger);

var_dump(socket_get_option($socketSOL_SOCKETSO_REUSEADDR));
?>

Sürüm Bilgisi

Sürüm: Açıklama
4.3.0 İşleven ismi değişti. Evvelce socket_getopt() idi.

add a note add a note

User Contributed Notes 3 notes

up
3
recycling dot sp dot am at gmail dot com
9 years ago
Just 2 notes here:
- On UNIX, If SO_DEBUG is set, the php program needs an effective user id of 0.
-  activating SO_OOBINLINE on a socket is equivalent to passing MSG_OOB flag to each recieving functions used with that socket (eg: socket_recv, socket_recvfrom).
up
4
Chad Lavoie
9 years ago
If using Unix Sockets, and you want to use SO_PEERCRED, you can use the number 17 for the optname (and SOL_SOCKET for the level).  The PID of the connecting process will be returned.
up
1
prennings at gmail dot com
6 years ago
I was playing around with this option to use multiply socket connections with same hostname and same port (IRC). However the socket function needed for this is SO_REUSEPORT.

Though the majority of linux distro's does not have that yet officially implented in there distro's.

However for debian there is an patch that can be installed to get it working:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c617f398edd4db2b8567a28e899a88f8f574798d

it has some work but I got it working after a while (Noobie in debian) maybe some other people are facing the same problem as I was.
To Top