Performanceproblem: socket & fgets
-
function readLine($sock) { if (!is_resource($sock)) { return 'not connected'; } ob_start(); $timeout=5; $line = ''; $timeout = time() + $timeout; $line .= fgets($sock, 512); //socket_recv ( $sock, $line, 512, 0 ); ob_end_clean(); return "<br/>line:".$line; } $sk = fsockopen("192.168.0.4", 12345, $errnum, $errstr, 1 ); for( $i=0; $i < 100; $i++ ) { fputs($sk, "/test\n/close\n") ; echo readLine( $sk );echo readLine( $sk ); } fclose($sk);
Das dauert 10 sekunden? Problem ist, dass fgets fast 500ms sekunden in kauf nimmt. Wenn ich das ganze via java schreiben dauert das max 0.1 ms?
Unter linux gibt es auch keinen utnerschied.
-
Das geht schon schnell, dauert aber auch 5-7 sekunden:
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect( $sock, "192.168.0.4", 1234 ); for( $i=0; $i < 100; $i++ ) { $buffer = "/test\n/close\n"; socket_write( $sock, $buffer ); $read = socket_read( $sock, 1024 ); echo "<br/>LINE: ".$read; $read = socket_read( $sock, 1024 ); echo "<br/>LINE: ".$read; } socket_close( $sock );
-
Weisst Du denn, wer da blockt? Es kann ja auch am Netzwerk liegen.
-
Öhmmmmmm mit java auf dem serlben rechner funktioniert dat ding perfekt