[php] Als er data op sockets is, lezen anders doorgaan

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Ik ben bezig met een php script te schrijven die uit een bestaande server (in delphi) gemaakt statistieken haalt.

Het delphi gedeelte is helemaal werkend (getest met client in delphi gemaakt)

Alleen nu zit ik met het probleem dat als ik online een script heb ik moet pollen of er data is maar niet wil wachten tot er data is maar ook door wil gaan met het terug sturen van mogelijk ingegeven gegevens.

Dus...
Als ik stuur 'STATS ABC' dat ik dan de stats binnen krijg maar als ik onder tussen ook wil zorgen dat de server iets gaat printen ik ook al 'PRINT ALL' kan sturen zonder te moeten wachten totdat de server zijn data heeft verwerkt en naar mij heeft gestuurd....

Het opzetten van de verbinding is geen enkel probleem...
PHP:
1
2
3
4
5
$fp = fsockopen ("213.46.4.195", 6666, $errno, $errstr, 30);
if ($fp) {
.......................................................
    fclose ($fp);
}


Maar om nu te zorgen dat ik niet ga wachten op data als er geen data is heb ik wat toevoegingen gedaan

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$fp = fsockopen ("213.46.4.195", 6666, $errno, $errstr, 30);
if ($fp) {
    while ($fp)
    {
        $sockinfo = socket_get_status($fp); 
        if ($sockinfo["unread_bytes"] > 0) 
        {
            $data = fgets($fp,$sockinfo["unread_bytes"]); 
            $sql = "insert into recv_lines values ('$data')";
            $res = mysql_query($sql);
            // op de output window de data laten zien
            echo "<script>\n parent.tekst.AddTekst('".$data."');\n </script>";
        } 
        $sql = "select * from send_lines";
        $res = mysql_query($sql);
        while ($row = mysql_fetch_array($res)) fputs($fp, $row[inhoud]."\r\n", strlen($row[inhoud]."\r\n"));
        $sql = "delete from send_lines";
        $res = mysql_query($sql);
        // even wachten tegen server overload
        sleep(10);
    }
    fclose ($fp);
}


Maar nu maakt het niet uit hoeveel data ik stuur hij zal nooit wat lezen... hij komt nooit in dat stukje waar hij de data in een tabel zet en op de output window laat zien.

Iemand enig idee waarom ik dus altijd 0 bytes data recieve?
Is dit wel de goede oplossing? Hoe moet het dan anders........

Uit eindelijk wil ik dit ook voor een soort chat gaan gebruiken maar dan dus niet met deze server maar een ander...

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
-dubbele post

[ Voor 90% gewijzigd door Parcye op 04-03-2003 00:51 ]

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
*schop*

Heb inmiddels met andere poorten, andere apps getest, maar geen oplossing gevonden

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 16:24

mulder

ik spuug op het trottoir

Wat gaat er mis, blijft het scripten hangen? Oneindige loop?

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Hij leest geen data....

Als hij de status opvraagd zou hij moeten zien dat er bijvb 44 bytes ongelezen zijn en moeten deze 44 dus gelezen worden

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 16:24

mulder

ik spuug op het trottoir

Ik heb verder weinig verstand van sockets, ik probeer gewoon wat nu :) maar als ik dit script draai krijg ik een Bad file descriptor error.

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
omdat ik me server uit heb staan....

maar vervang mijn ip door 213.132.200.245 en poort 80 bijvb......

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
*schop*

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002

Pagina: 1