#!/usr/local/bin/php ?q <?php function a(){ $address = '192.168.0.50'; $port = 8000; $sock = socket_create(AF_INET, SOCK_STREAM, 0); socket_listen($sock); $client = socket_accept($sock); while(true){ $input = socket_read($client, 1024); if($input == ""){ continue; } $output = "HTTP/1.1 200 OK\r\nDate: Sun, 12 Aug 2012 17:43:12 GMT\r\nServer: Apache/2.2.20 (Ubuntu)\r\nConnection: close\r\nContent-Type: text/html; charset=iso-8859-1\r\n\r\nzxc".chr(0); if(ord($output) !== 0){ @socket_write($client, $output); } } } a(); ?>
Ten kod działa, ale nie dokońca tak jak powinien. Otóż gdy otwieram w przeglądarce http://192.168.0.50:8000 strona ładuje się, ładuje i załadować nie może. Dopiero gdy zatrzymam ładowanie, wczytywana jest odpowiedź serwera. Serwer odpowiada od razu po otrzymaniu zapytania. To jest pierwszy problem. Drugim problemem jest brak możliwości ponownego połączenia. Musze zresetować serwer aby ponownie wysłać mu zapytanie. Wiecie może dlaczego tak się dzieje?
@edit
Kod jest w fazie prób i błędów także nie jest on za piękny.
Gdy zakomentuje
if($input == ""){ continue; }
serwer cały czas wysyła odpowiedź