PHP - Socketfunktionen
-
Hi Community!
Was muss ich machen, um die Socketfunktionen in PHP benutzen zu können. Laut diversen Dokumentationen ist dies eine Erweiterung.
Die hier beschriebenen Socket Funktionen sind Teil einer PHP Erweiterung, die beim Kompilieren mit der Option --enable-sockets beim Befehl configure eingebunden werden muss.
Muss ich den Quelltext wirklich neu compilieren? Gibt es keine Möblichkeit vie DLLs?
Vielen Dank im Voraus!
Konstantin
-
Hey,
schau ma in Deine php.ini / bzw. phpinfo() und guck nach, ob es nicht schon einkompiliert/aktiviert ist(müsste standartmäßig so sein).
Ansonsten kannst Du die Extension(dll/so) in Dein Extensions Dir legen und sie in der php.ini aktivieren.
Hoffe ich konnte Dir helfen...
Gruss
-
Danke, ich hab es jetzt hinbekommen.
Jetzt hab ich eine neues Problem. Ich krieg heute noch zu viel....
ich versuche zu einem NNTP-Server zu connecten. Hier mal mein PHP:
<!doctype html public "-//w3c//dtd html 3.2 final//en"> <html> <head> <title></title> </head> <body> <?php echo "<h2>NNTP Verbindung</h2>"; $service_port = getservbyname('nntp', 'tcp'); $address = gethostbyname('localhost'); $socket = socket_create(AF_INET, SOCK_STREAM, 0); if($socket < 0) { echo "ERROR: socket_create():<br>" . socket_strerror ($socket) . "<br><br>"; exit; } else echo "Socket OK!<br><br>"; echo "Connect to '$address' at port '$service_port'...<br><br>"; $result = socket_connect($socket, $address, $service_port); if($result < 0) { echo "ERROR: socket_connect():<br>($result)<br>" . socket_strerror($result) . "<br><br>"; } else { echo "Socket connect OK!<br><br>"; } $snd = "LIST\r\n"; $out = ''; echo "Send '$snd'..."; socket_write ($socket, $snd, strlen ($snd)); echo "OK.<br><br>"; echo "Answer from Server:<br>"; while ($out = socket_read($socket, 2048)) { echo $out; } echo "Close socket..."; socket_close ($socket); echo "OK<br><br>"; ?> </body> </html>
Das läst sich aber leider nicht ausführen. Der lädt nicht zu Ende... Wenn ich de Funktion socket_read auskommentiere, dann funzt es.
Ersetze ich die 2048 duch eine 1, dann bekomme ich eine "2" ausgegeben!
Wo ist der Fehler?
Konstantin