[PHP]Meerdere gameservers queryen gaat erg traag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik een PHP scipt wat gebruikt maakt van gsQuery om gameservers te queryen.

Dit werkt allemaal prima echter ik wil 1 ding en dat gaat zo traag dat het niet bruikbaar is.
Ik wil een 100 tal servers queryen, ik wil alleen maar weten hoe de naam is van de gameserver.
Deze namen moeten dan op een pagina worden gedisplayed.

Nou dit scripten is niet moeilijk alleen het probleem is dat het zolang duurt voordat het script alle 100 servers heeft gehad, dit duurt bijna 1 minuut.
Dus als je de pagina opent zie je de eerste minuut niks en dan eens het resultaat.
Ik query nu ook alleen maar naar de naam van de server, anders niets.

De query gaat nu als volgt: (sterk vereenvoudigd als voorbeeld)
code:
1
2
3
4
5
6
7
include_once("gsQuery/gsQuery.php");
 // een query naar DB om IP, poort etc op te halen
 // via een while dan de volgende query: 
 $gameServer=gsQuery::createInstance($protocol, $serverip, $querypoort);
 $gameServer->query_server(TRUE,TRUE);
 $servername = $gameServer->htmlize($gameServer->servertitle);
 echo "$servername";


Nu zoek ik dus een manier/oplossing zodat dit zeer snel gebeurd, kan eigenlijk niets verzinnen zodat het snel gaat. Wie weet een passende oplossing?

Acties:
  • 0 Henk 'm!

  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Je kan natuurlijk soort van cache gaan gebruiken.
Je laat de server om de 10 minuten alle servers aflopen en daarna maakt die een overzicht.php aan.
Waardoor dus de bezoekers gelijk resultaat zal krijgen. Tis niet meer up-to-date maar het werkt wel :)

Wat je trouwens ook kan doen is onder iedere server query een Flush doen zodat de pagina zichzelf steeds meer opbouwt..

[ Voor 20% gewijzigd door Facer op 08-01-2005 23:04 ]


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Misschien heb je wat aan dit topic. Ook daarin worden suggesties gedaan om bijvoorbeeld de resultaten te cachen.

Acties:
  • 0 Henk 'm!

  • Spockz
  • Registratie: Augustus 2003
  • Laatst online: 10:08

Spockz

Live and Let Live

Als je misschien de queries opsplitst in queries van 10? Dan komen ze bij de gebruiker per 10 binnenrollen en dan is er in ieder geval íets te zien.
En dit lijkt me ook niet echt lekker als er een paar honderd mensen dit script gaan lopen uitvoeren? Daarom kan je beter de cache gebruiken zoals facer hierboven al zei.

C'est le ton qui fait la musique. | Blog | @linkedin
R8 | 18-55 IS | 50mm 1.8 2 | 70-200 2.8 APO EX HSM | 85 1.8


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoe zou die cache dan het beste werken?
Weg schrijven in een database of een bestand?

Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Nja database lijkt me.

En gewoon op datum checkken (http://dev.mysql.com/doc/...e_and_time_functions.html) in 1 query of er nog een record bestaat van < 10 min.

Of desnoods met mktime() tijdstempels (is makkelijker)

[ Voor 19% gewijzigd door flashin op 08-01-2005 23:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het nu weg geschreven in een file

Vraag me alleen af of er een manier is om die file elke keer te legen voordat je hem schrijft.
Nu schrijft ie het er steeds bij, dat is niet de bedoeling.

Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 10:10

WormLord

Devver

En dat kan ook heel simpel. Gewoon het bestand openen in 'w'rite mode i.p.v. 'a'ppend mode.

Acties:
  • 0 Henk 'm!

  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Je kan ook nog een index_tmp.php aanmaken en als die klaar is laat je die vervangen met de orginele index.php zodat de gebruiker nooit halve pagina's krijgt.

Acties:
  • 0 Henk 'm!

Verwijderd

Kun je het querien niet beter in een cron job stoppen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@wormlord:
Ja dom van mij, was al laat niet bij stil gestaan.

@OneOfBorg:
Dat doet ie al, elke 5 minuten voert ie het script uit en schrijft nu een file weg
Alles werkt nu, alleen met een "vertraging" van 5 minuten alleen dat is niet zo erg.
Het resultaat is nu dat als je op de naam van de server klikt dat er dan een live query wordt gedaan naar de server met meer details (players, ping, map etc).

Het ging me erom om een overzicht van een helehoop servers ineens te laten zien zonder te wachten, met de cache is me dat nu goed gelukt.
Pagina: 1