rfc:socket_getaddrinfo
Differences
This shows you the differences between two versions of the page.
rfc:socket_getaddrinfo [2016/08/11 21:37] bp1222 |
rfc:socket_getaddrinfo [2017/09/22 13:28] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== PHP RFC: Implement socket_getaddrinfo() ====== | ||
- | * Version: 0.1 | ||
- | * Date: 2016-08-08 | ||
- | * Author: David Walker (dave@mudsite.com) | ||
- | * Status: Under Discussion | ||
- | * First Published at: http:// | ||
- | ===== Introduction ===== | ||
- | This RFC targets a reported feature request in [[https:// | ||
- | |||
- | ===== Proposals ===== | ||
- | I'm starting this RFC with 3 proposed solutions, which are very similar, but I'm not sure which is preferable for implementation. | ||
- | ==== Proposal 1 ==== | ||
- | The implementation[[https:// | ||
- | <file php> | ||
- | socket_getaddrinfo(string node[, mixed service, array hints]) : array | ||
- | socket_addrinfo_connect(resource $addrinfo) : resource | ||
- | socket_addrinfo_bind(resource $addrinfo) : resource | ||
- | socket_addrinfo(resource $addrinfo) : array | ||
- | socket_addrinfo_close(sockaddrresource sockaddr) : null | ||
- | </ | ||
- | |||
- | <file php> | ||
- | <?php | ||
- | $addrinfo = socket_getaddrinfo(' | ||
- | $sockaddr = reset($addrinfo); | ||
- | if (!$sockaddr) die ("No Valid Socket Types" | ||
- | $sock = socket_addrinfo_bind($sockaddr); | ||
- | // ^^ $sock is a socket resource that is bound to 127.0.0.1: | ||
- | foreach ($addrinfo as $sockaddr) { | ||
- | socket_addrinfo_close($sockaddr); | ||
- | } | ||
- | </ | ||
- | |||
- | ==== Proposal 2 ==== | ||
- | This attempt [[https:// | ||
- | |||
- | <file php> | ||
- | socket_getaddrinfo(string $node[, mixed $service, array $hints]) : array | ||
- | socket_connect(resource $sock_or_addr[, | ||
- | socket_bind(resource $sock_or_addr[, | ||
- | socket_addrinfo(resource $addrinfo) : array | ||
- | socket_addrinfo_close(resourece $addrinfo) : null | ||
- | </ | ||
- | |||
- | <file php> | ||
- | <?php | ||
- | $addrinfo = socket_getaddrinfo(' | ||
- | $sockaddr = reset($addrinfo); | ||
- | if (!$sockaddr) die ("No Valid Socket Types" | ||
- | $sock = socket_bind($sockaddr); | ||
- | // ^^ $sock is a socket resource that is bound to 127.0.0.1: | ||
- | foreach ($addrinfo as $sockaddr) { | ||
- | socket_addrinfo_close($sockaddr); | ||
- | } | ||
- | </ | ||
- | |||
- | ==== Proposal 3 ==== | ||
- | This attempt [[https:// | ||
- | |||
- | <file php> | ||
- | socket_getaddrinfo(string $node[, mixed $service, array $hints]) : array | ||
- | socket_connect(resource $sock, mixed $address_or_addrinfo[, | ||
- | socket_bind(resource $sock, string $address_or_addrinfo[, | ||
- | socket_addrinfo_close(resourece $addrinfo) : null | ||
- | </ | ||
- | |||
- | <file php> | ||
- | <?php | ||
- | $addrinfo = socket_getaddrinfo(' | ||
- | $sockaddr = reset($addrinfo); | ||
- | if (!$sockaddr) die ("No Valid Socket Types" | ||
- | $sock = socket_create($sockaddr[' | ||
- | $sock = socket_bind($sock, | ||
- | // ^^ $sock is a socket resource that is bound to 127.0.0.1: | ||
- | foreach ($addrinfo as $sockaddr) { | ||
- | socket_addrinfo_close($sockaddr); | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Backward Incompatible Changes ===== | ||
- | New functionality; | ||
- | |||
- | ===== Proposed PHP Version(s) ===== | ||
- | Next PHP 7.x (currently 7.2) | ||
- | |||
- | ===== RFC Impact ===== | ||
- | ==== To SAPIs ==== | ||
- | None | ||
- | |||
- | ==== To Existing Extensions ==== | ||
- | Socket acquired new functionality | ||
- | |||
- | ==== To Opcache ==== | ||
- | None | ||
- | |||
- | ==== New Constants ==== | ||
- | Exposing the AI_* family of constants. | ||
- | |||
- | ===== Open Issues ===== | ||
- | |||
- | ===== Proposed Voting Choices ===== | ||
- | Vote to implement the new functions, would require a 2/3 majority. | ||
- | |||
- | ===== Implementation ===== | ||
- | |||
- | ===== References ===== | ||
- | * [1] - [[https:// | ||
- | * [2] - [[https:// | ||
- | * [3] - [[https:// |
rfc/socket_getaddrinfo.txt · Last modified: 2017/09/22 13:28 (external edit)