[PHP/GTK]loopje probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
na wat code van o.a. php.net te hebben door gelezen kwam ik op een mooi idee uit.
namelijk een servertje in php MET GUI. gelukkig hebben we daar gtk-php voor. Maar na de voorbeeldjes daarvoor te hebben bekeken kwam ik toch tot een ietwat irritante ontdekking; namelijk dat in elk script aan het eind "Gtk::main();" wordt aangeroepen.

in een voorbeeld code voor een servertje in php is echt ook een loop nodig en 2 loops zou kunnen met multithreading, alleen ondersteunt php dat niet zo op windows.

voorbeeldje server:
PHP:
1
2
3
4
5
6
7
8
$fd = socket_create(AF_INET, SOCK_STREAM, 6 /* OR getprotobyname("TCP")*/);
$PORT = 5000;
socket_bind($fd, "0.0.0.0", $PORT);
while(true)
{
$remote_fd = socket_accept($fd);
remote_socket_client_handle($remote_fd);
}


heeft iemand hier misschien een mooie oplossing voor (een timer met callback ofzo)?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb oplossing gevonden :)
voor de gene die hier ook mee aan het pielen zijn of zullen gaan zijn, hier de oplossing:

PHP:
1
2
3
4
5
6
maakwindowbla();
while (true)
{
    doe_wat_socket_gebeuren();
    gtk::main_iteration(); //geef php weer de tijd om event af te handelen
}


let er wel op dat je zelf de loop moet quiten als window geclosed wordt (of in ieder geval gtk::main_iteration() niet meer aanroepen) anders gaat php op zn bek.

Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Moest ik jou zijn, ik maakte mijn GUI los van de code. Als je dat ooit wilt draaien bij een hoster ofzo depend je meteen op GTK (en in Linux dus ook op XFree86). Het lijkt me dat je beter een soort 'webservice' maakt waarmee je via je server commando's kan opgeven. Zo staat je GUI los van het beest zelf (of omgekeerd ;-) )

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dingstje schreef op 01 juli 2004 @ 10:10:
Moest ik jou zijn, ik maakte mijn GUI los van de code. Als je dat ooit wilt draaien bij een hoster ofzo depend je meteen op GTK (en in Linux dus ook op XFree86). Het lijkt me dat je beter een soort 'webservice' maakt waarmee je via je server commando's kan opgeven. Zo staat je GUI los van het beest zelf (of omgekeerd ;-) )
yep, dat is inderdaad waar (had ik later ook nog over nagedacht :)) maar dan zit je met de 'webservice' die 2 threads nodig zou hebben, want de webservice moet misschien ook wel commando's van de server terug krijgen en daarvoor moet ie nou gewoon op data wachten van socket. Ook in non-blocking moet ie elke keer ff checken... dus kom ik weer bij zelfde oplossing uit ;)