|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2017-10-12 17:06 UTC] 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
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 19:00:01 2025 UTC |
@bwoebi neat trick in theory, but: $ php -r "socket_import_stream(STDIN);" PHP Warning: socket_import_stream(): cannot represent a stream of type STDIO as a Socket Descriptor in Command line code on line 1 PHP Stack trace: PHP 1. {main}() Command line code:0 PHP 2. socket_import_stream() Command line code:1