Archief - serverside script

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

hydraa

Legacy Member
Hallo,

Ik probeer iets te maken waar mensen kunnen "joinen" en hierdoor in een nieuwe "searching" tabel worden gestoken. Dit lukt allemaal wel maar nu komt het probleem.

Ik wil dat er om de minuut gecheckt wordt of er 4 mensen in de tabel staan, en indien dit het geval is worden deze 4 mensen verplaatst naar een ander "game" tabel.

Ik heb op mezelf al geleerd hoe te werken met wat html en php en een mysql server, maar ik heb geen flauw idee of het mogelijk is om zoiets server-side te gaan checken en uit te voeren... Ik wist zelfs niet welk voorvoegsel ik hiervoor moest pakken voor de discussie :p

Iemand die mij kan vertellen of dit mogelijk is en indien ja hoe het werkt?

Alvast bedankt

bugoff

Legacy Member
Is redelijk simpel, je maakt gewoon een php script die controleert wat jij wil.

Als dat af is plaats je dat gewoon in een crontab op uw server.

Parnakra

Legacy Member
Controleer gewoon het aantal mensen in je searching tabel telkens er iemand toegevoegd wordt?

Veel minder overhead en je bereikt hetzelfde.

hydraa

Legacy Member
Ow ja ik zie nu dat er in de directadmin van men hosting wel een tab is met "Cronjobs" waarvan ik voordien niet wist waarvoor het diende...

Ik kan hier dus gewoon een file "scriptje.php" opzetten en dan op een of andere manier zeggen dat dit om de minuut moet gebeuren?

Heb je al gewerkt met die directadmin, want ik vind het nu niet bepaald duidelijk hoe ik bijvoorbeeld kan opgeven voor dit elke minuut te doen...
zie afbeelding: http://www.dota-planet.com/cronjobs.png

hydraa

Legacy Member
Parnakra zei:
Controleer gewoon het aantal mensen in je searching tabel telkens er iemand toegevoegd wordt?

Veel minder overhead en je bereikt hetzelfde.

Ja maar het is de bedoeling dat er bijvoorbeeld ook een timer afloopt zodat iedereen duidelijk kan zien wanneer de game zal starten. Met jouw methode start de game altijd met het joinen van de 4e.

Maar het zou inderdaad een simpelere oplossing kunnen zijn moest het me niet lukken met die cronjobs...

bugoff

Legacy Member
De oplossing van parnakra is ook wel een stuk eenvoudiger.

Bij minute vul je */1 in, derest laat je op * staan,

uw command zal iets als dit moeten zijn:

/usr/local/bin/php -f /home/hkuzgqwx/en/de/rest/naar/uw/file.php

Hier ga ik er wel vanuit dat je geen includes doet.

hydraa

Legacy Member
Die file.php zou normaalgezien mijn database.php moeten includen.

Gaat dit niet dan als ik de include gewoon in de file.php zet?

hydraa

Legacy Member
en waarom het gedeelte "/usr/local/bin/php -f" voor die "/home/hkuzgqwx/en/de/rest/naar/uw/file.php"?

bugoff

Legacy Member
als je een include in de file.php zet, ga je best uw commando aanpassen naar:

cd /home/hkuzgqwx/map/naar/uw/www/directory; /usr/local/bin/php -f /home/hkuzgqwx/en/de/rest/naar/uw/file.php

We gebruiken eerst het cd commando om terecht te komen in de juiste dir waar al uw php files staan, mocht je anders include('jefke.php'); gebruiken gaat hij een include proberen vanaf uw homedir wat /home/hkuzgqwx is, wat ook niet zal lukken :)

De reden dat we /usr/local/bin/php -f gebruiken is omdat crontab niet kan weten wat jij wil doen met uw php file, je moet die dus "openen" met het juiste programma.

We geven ook het volledige pad naar php omdat sommige servers lastig doen als je gewoon php -f gebruikt, de -f staat trouwens voor open die file die ik na mijn -f geef.

bugoff

Legacy Member
Zeg mij dan eens hoe je in directadmin een php cronjob kan instellen zonder het commando meetegeven, Ik wil altijd bijleren :)

hydraa

Legacy Member
directadmin gebruik ik op host versio.

Enig idee of die linux commando's nodig zijn?

GivenToFly

Legacy Member
Dit is geen juist gebruik van cronjobs. Een cronjob die elke minuut een script runt is zelden of nooit nodig. De oplossing die Parnakra geeft, is de juiste. Als je cron zou gebruiken, dan is het nog niet mogelijk een teller te maken die aftelt tot wanneer je spel begint, om zoiets te doen zal nog steeds bv. een javascript listener nodig zijn om te bepalen wanneer je 4 spelers gevonden hebt.

hydraa

Legacy Member
een cronjob is dus eerder om bijvoorbeeld wekelijks een backup te laten maken of iets dergelijks. Niet iets dat om de minuut moet gebeuren?

Wat ik wil verwezenlijken is iets gelijkaardigs met het volgende:
Dota-League: Instant - Instant Single Game

Een lijst met mensen, een teller die aftelt en als die op nul komt het aantal spelers checked met een gepast gevolg.

Kan ik dit dan doen met een cronjob en een javascript teller? of zijn er beter/juistere methodes voor iets dergelijks?

GivenToFly

Legacy Member
Het wekelijks maken van een backup is inderdaad wel iets waarvoor je cronjobs gebruikt.

Wat jij wil kan je gewoon doen door een javascript timer en een ajax-implementatie. Als de timer is afgelopen voer je een Ajax-functie uit, hieruit volgt ofwel dat voldoende spelers aanwezig zijn en kan het spel gestart worden, ofwel zijn er onvoldoende en laat je de timer herbeginnen. Je moet er dan natuurlijk wel voor zorgen dat de timers voor alle gebruikers gesynchroniseerd lopen (en niet bv. steeds van 60 laten beginnen), dat kan waarschijnlijk het makkelijkste door steeds af te tellen naar de volgende minuut server-tijd die je met PHP ophaalt en dan in een Javascript-variabele stopt.

hydraa

Legacy Member
Dus als de pagina gerefreshed wordt checked het javascript de serverclock en kijkt hoeveel seconden er nog zijn tot de volgende minuut en begint hiervan af te tellen. Tot daar ben ik mee en dat zal wel te vinden zijn op internet (ik ken namelijk niet al te veel van javascripts af)

Maar wat houdt die AJAX-implementatie juist in? Een php script schrijven dat deze check doet en deze mensen copiert naar een nieuwe tabel etc lukt wel. Maar hoe kan ik er dan voor zorgen dat niet elke client na die minuut het script uitvoert en probeert iedereen te copieren naar een nieuwe tabel? Als dit dan 10 keer wordt uitgevoerd gaat dit toch voor problemen zorgen niet? zeker als ze dit allemaal exact op dezelfde moment proberen...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan