Originariamente inviato da Fabio Heller
Non è una mancanza, è che CLI lavora a basso livello quindi il buffer lo devi creare e gestire tu
E' quello che vorrei! Leggermi il buffer come e quando voglio io, senza che l'esecuzioni si arresti su fgetc()!

Il tuo esempio modificato per far vedere quello che vorrei fare:

codice:
$len = 4096 ; 
$stopChar = 'c'; // per uscire dal ciclo
$buffer = '' ; 

$i = 0;
while( false !== ($x = fgetc(STDIN)) ) 
{ 
	// voglio che sia stamapto $i a intervalli di 1 secondo
	// ...vorrei, ma non accade! perchè mi fermo su fgetc()
	$i++;
	fwrite(STDOUT, $i."\n");
	sleep(1);

	if( $x == $stopChar ) 
	{ 
		break; 
	} 
	else 
	{ 
		$buffer .= $x;
	} 

}

fwrite(STDOUT, "quit command received.\n");
sleep(2);
A me serve una

bool getKeyState($keycode);

da poter controllare tranquillamente come:

if(getKeyState(KEY_ESC)) break;

...e al momento non si può fare in PHP CLI, non c'è verso.

Al momento ho "fixato" con quello stratagemma del server/client inserendo una cosa diquesto tipo:

codice:
$ss = new csmallserver();
$ss->bind($this->address_sv, (int)$this->port_sv);
$ss->listen();

while(1)
{
	// fai fuffa, controlli, etc


	// controllo se è giunto qualcosa al server
	// $ss->poll() non si stoppa come fgetc() in attesa di INVIO
	// o altro
	$remote_command = $ss->poll();
	if($remote_command != "")
	{
		if($remote_command == "quit")
		{
			$ss->close();
			break;
		}
	}
}
Così va, ma è come mobilitare l'esercito USA contro un albanese che ruba una banana dal fruttivendolo...