Req #75367 [Opn->Wfx]: socket_select with STDIN on linux
| From: | bwoebi@php.net | Date: | Thu, 12 Oct 2017 17:12:34 +0000 |
| Subject: | Req #75367 [Opn->Wfx]: socket_select with STDIN on linux | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-211649@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=75367&edit=1
ID: 75367
Updated by: bwoebi@php.net
Reported by: divinity76 at gmail dot com
Summary: socket_select with STDIN on linux
-Status: Open
+Status: Wont fix
Type: Feature/Change Request
Package: Sockets related
Operating System: Debian 10, kernel 4.12.13
PHP Version: 7.0.24
Block user comment: N
Private report: N
New Comment:
STDIN is a stream resource, not a socket resource.
Use socket_import_stream(STDIN), if you wish to use socket_select() here. (Or, use
socket_export_stream($srv) and use stream_select().)
Previous Comments:
------------------------------------------------------------------------
[2017-10-12 17:06:42] divinity76 at gmail dot com
Description:
------------
socket_select should be able to listen to STDIN on linux, because it could be useful, and the
underlying select() call is fully capable of doing it. i was recently in a situation where i needed
to listen to changes both in a bunch of socket_accept'ed sockets, and STDIN at the same time,
but socket_select doesn't accept STDIN in the $read array.. at least on linux, that
shouldn't be a problem.
Test script:
---------------
<?php
const PORT=9999;
$srv = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP );
socket_bind ( $srv, "0", PORT );
socket_listen ( $srv );
$unused = array ();
$read = array (
$srv,
STDIN
);
while ( false !== socket_select ( $read, $unused, $unused, NULL ) ) {
die("detected something");
}
Expected result:
----------------
it should detect activity on STDIN
Actual result:
--------------
PHP Warning: socket_select(): supplied resource is not a valid Socket resource in /plain.php on
line 11
PHP Stack trace:
PHP 1. {main}() /plain.php:0
PHP 2. socket_select() /plain.php:11
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=75367&edit=1