Probleemstelling:
Ik wil een listening daemon maken die poort connecties accepteert en vervolgens bij een openstaande poort verbinding gegevens kan pushen en kan ontvangen (maar dan wel tegelijkertijd)...
Wat ik nu al heb is een listening socket met een simpel handshake dingetje waarmee de andere kant informatie kan versturen en kan ophalen, maar... (en nou komt het).. ik wil eigenlijk nog een 2e subthread aanmaken die iedere 500 milliseconden een query op een database loslaat (wat natuurlijk lekker gecached is voor snelheid) en die (bij het zien van nieuwe records in de output tabel) de data verstuurt.
Hoe kan ik een 2e thread maken die (zodra er iets in de output tabel staat) meteen deze data uitspuugt.. OOK AL STAAT DE 1STE THREAD TE WACHTEN OP INPUT.. (want daar loop ik nu vast, outputten gaat niet als je nog op input staat te wachten).
Als ik hem nu opstart (vanaf de linuxconsole), doet 'ie dit: (zoals het hoort, zie source)
De database (voor diegene die dit willen testen) bestaat uit 2 tables, 'input' & 'output', met beide een 'id' en een 'data' veld. .. eventjes de connection parameters aanpassen en dan kun je 't zelf ook draaien eventueel.
Hieronder m'n broncode:
*snip*
Ik wil een listening daemon maken die poort connecties accepteert en vervolgens bij een openstaande poort verbinding gegevens kan pushen en kan ontvangen (maar dan wel tegelijkertijd)...
Wat ik nu al heb is een listening socket met een simpel handshake dingetje waarmee de andere kant informatie kan versturen en kan ophalen, maar... (en nou komt het).. ik wil eigenlijk nog een 2e subthread aanmaken die iedere 500 milliseconden een query op een database loslaat (wat natuurlijk lekker gecached is voor snelheid) en die (bij het zien van nieuwe records in de output tabel) de data verstuurt.
Hoe kan ik een 2e thread maken die (zodra er iets in de output tabel staat) meteen deze data uitspuugt.. OOK AL STAAT DE 1STE THREAD TE WACHTEN OP INPUT.. (want daar loop ik nu vast, outputten gaat niet als je nog op input staat te wachten).
Als ik hem nu opstart (vanaf de linuxconsole), doet 'ie dit: (zoals het hoort, zie source)
code:
1
2
3
| cappie@tweakers.net:~/listener$ php ./listen.php SERVICE LISTENING ON 0.0.0.0:1337 cappie@tweakers.net:~/listener$ |
De database (voor diegene die dit willen testen) bestaat uit 2 tables, 'input' & 'output', met beide een 'id' en een 'data' veld. .. eventjes de connection parameters aanpassen en dan kun je 't zelf ook draaien eventueel.
id | int |
data | text |
created | timestamp |
Hieronder m'n broncode:
*snip*
[ Voor 73% gewijzigd door MueR op 30-03-2011 14:54 ]