[PHP] Quiz script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik zit met een vraag. Ik zal eerst een beetje uitleg geven over de situatie...

Ieder jaar organiseren ik en mijn vader een quiz. Elk jaar evolueert onze quiz en ziet hij er proffesioneler uit... al zeg ik et zelf... Altijd foto's/video/muziek/vragen op een groot scherm met presentator en zo. Het enige nadeel, wat we nu willen veranderen is dat de antwoorden van de groepen telkens op papier geschreven moest worden en dan door onze jury controleerd worden. Dit jaar zouden we willen eens moderniseren en alle antwoorden via pc verwerken.

We gaan van het idee uit om per ploeg een laptop mee te brengen. En in de zaal een netwerkinstallatie te plaatsen. Ieder jaar zitten we met rond de 30 groepen en verwachten dit jaar hetzelfde.

Wat zouden we willen doen:
Iedereen moet in het begin van de quiz surfen naar een interne website. Iedereen logt hier in en de quiz start. Op het grote scherm worden de vragen geprojecteerd ( 3 vragen per thema ). Op het laptop scherm krijgen ze 3 textboxen ( hoe schrijf je dat eigenlijk ). Als alle drie de vragen voorgelezen zijn krijgt iedereen nog 30 seconden de tijd en dan worden de antwoorden automatisch verstuurd.

Ik ben aan dit project begonnen met kennis html, javascript, (basis)php. Nu heb het eerst proberen op te lossen met ajax. Dit ging perfect, in mijn testopstelling kon ik door waarden aan te passen in de database iedereen alles laten posten. Daarom moet iedere groep elke seconde bijvoorbeeld, dmv het ajax scriptje, pollen naar de waarden in de database. In de eerste plaats vind ik dit omslachtig en ben ik bang voor de belasting van de server, aangezien dit per seconden minstens 35 request zijn ( server is intel pentium d, 3.0 Ghz, 1 Gb Ram).

Daarom dacht ik of er een mogelijkheid bestaat om met php een commando tegeven naar de clients/ingelogden om te wisselen van pagina/hun form te submitten/de timer van 30 seconden te starten/... Ik ben op zoek gegaan naar code maar vond niet echt iets die mij verder kan helpen. Nu is mijn vraag op zo'n code bestaat en te gebruiken is? Of denken jullie dat de server deze requests aankaan en ik verder kan werken met mijn ajax scriptjes? Als iemand nog andere ideeën geeft, ik ben één en al oor :p...

Bedankt of voorhand
Simon

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wat jij wil is PUSHen van data en dat (hoewel met ranzige workarounds, min of meer, een beetje mogelijk) is niet waar het HTTP protocol *(en je browser for that matter)* op gebouwd zijn. Wat je wel prima kan doen is met JS een timertje laten lopen (maar wel makkelijk te omzeilen, maar dat is weer te ondervangen door het serverside te checken bij submits e.d.)

[ Voor 43% gewijzigd door RobIII op 06-06-2008 13:30 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Ikzelf zou zeggen 'right tool for the right job'. Ik denk dat in dit geval het helemaal niet zo handig is om een op html gebaseerde oplossing te nemen. Juist het server push gedeelte maakt het erg vervelend. Waarschijnlijk maak je het jezelf een stuk makkelijker wanneer je gewoon een applicatie ontwikkeld.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Welke data verstuur je dan van de server naar de client? Oftewel: waarom moet er gepolled/gepushed worden?

Edit:
Je kunt als de antwoorden opgestuurd worden (van client naar server) in het antwoord meegeven hoevel tijd er is om het volgende antwoord te geven.
Eventueel poll je dan nog 1x na de helft van die tijd om te checken.

[ Voor 51% gewijzigd door Juup op 06-06-2008 13:36 ]

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
In de eerste plaats vind ik dit omslachtig en ben ik bang voor de belasting van de server, aangezien dit per seconden minstens 35 request zijn ( server is intel pentium d, 3.0 Ghz, 1 Gb Ram).
Dat lijkt me ook weer niet zo een probleem hoor.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Juup schreef op vrijdag 06 juni 2008 @ 13:33:
Welke data verstuur je dan van de server naar de client? Oftewel: waarom moet er gepolled/gepushed worden?
Wel het idee is als iedereen ingelogd is dat ze een wachtscherm krijgen. Iedere groep wacht op het teken van de server ( die nu via een verandering in de database ) gegeven wordt. Als het teken gegeven is dan kunnen ze antwoorden, op de achtergrond wordt nog steeds gepold om te kijken of de 30 seconden nog niet moeten beginnen lopen. Als deze dan mogen beginnen lopen, word hier ook telkens gepold om te kijken of de timer nog gelijk loopt met de server om misbruikt te vermijden. Na de 30 seconden word het form automatisch gesubmit en gaat de browser weer naar het wachtscherm tot het volgende signaal gegeven wordt.

De applicatie is een goed idee, heb ik ook overworgen, maar de enigste taal die daarin een beetje kan in vb.net. En aan de netwerkinstructies geraak ik niet uit. Ofwel dat iemand een voorbeeld heeft van een chatprogramma of zo. Wat ik zocht zoiets, maar vond niet iets dat mij kon helpen. Ook is het nadeel daarvan is dat iedereen dit nog moet installeren. En dan heeft niet iedereen de juiste frameworks staan of zo...

Maar het gemakkelijkste is met een browser, dat heeft iedereen en het is maar de link te geven...

Acties:
  • 0 Henk 'm!

  • martijnve
  • Registratie: December 2004
  • Laatst online: 16:12
Simpelste is denk ik om bijv de clients elke (paar) seconde(n) de vraag op te laten halen:
zeg van http://ip/vraag.php daar staat steeds alleen de laatste vraag, als de vraag veranderd is tussen de laatste polls stuur je het andtwoord op en geef je die nieuwe weer. je kunt ook nog met js een tellertje laten zien hoe lang ze nog hebben.

Deze javascript teller is natuurlijk makkelijk te omzeilen dus moet je server-side in php nog controleren of de antwoorden optijd zijn.

Dan is het waterdicht denk ik, en niet zo heel ingewikkeld.

Mini-ITX GamePC: Core i5 3470 | 16GB DDR3 | GTX 970 4GB | Samsung 830 128GB | Dell u2711 (27", IPS,1440p), 2343BW


Acties:
  • 0 Henk 'm!

  • Muthas
  • Registratie: December 2005
  • Niet online

Muthas

O+

35 requests per seconde draait die server z'n hand niet voor om :?

Acties:
  • 0 Henk 'm!

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 20:24
Hoi, ik heb een poosje geleden een dergelijk script geschreven. Met 12 clients, 1 presentator (met vraag/tussenstand/totale score) en een quiz-master pagina. Werkt met php/mysql en een hoop narigheid in javascript ;) mocht je interesse hebben dan wil ik het project wel naar je toe sturen...

edit, poll-frequentie moet inderdaad niet op 50 ms liggen per client met 12 clients. Dat gaat inderdaad niet goed. Verder is een state-systeem ook erg handig zodat je clients altijd uitkomen waar ze moeten komen na een refresh.

[ Voor 28% gewijzigd door jan-marten op 06-06-2008 14:29 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
jan-marten schreef op vrijdag 06 juni 2008 @ 14:27:
Hoi, ik heb een poosje geleden een dergelijk script geschreven. Met 12 clients, 1 presentator (met vraag/tussenstand/totale score) en een quiz-master pagina. Werkt met php/mysql en een hoop narigheid in javascript ;) mocht je interesse hebben dan wil ik het project wel naar je toe sturen...

edit, poll-frequentie moet inderdaad niet op 50 ms liggen per client met 12 clients. Dat gaat inderdaad niet goed. Verder is een state-systeem ook erg handig zodat je clients altijd uitkomen waar ze moeten komen na een refresh.
Als het niet teveel moeite is...
Het zou mij zeker verder helpen met het systeem zoals ik nu heb verder te perfectioneren...
Als je het mij zou willen mailen... ( email in profiel )

Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Je kan in Flash/Flex een socket verbinding maken met de server. Vanuit Flash kun je dan een Javascript call doen om de pagina te verversen/naar een ander pagina te gaan.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Verwijderd schreef op vrijdag 06 juni 2008 @ 14:46:
Als het niet teveel moeite is...
Het zou mij zeker verder helpen met het systeem zoals ik nu heb verder te perfectioneren...
Als je het mij zou willen mailen... ( email in profiel )
Post je het daarna hier even? Zo heeft natuurlijk niemand behalve jijzelf iets aan dit topic.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 06 juni 2008 @ 14:46:
Als je het mij zou willen mailen... ( email in profiel )
Fijn; dan leert de rest van de bezoekers er ook iets van :|
Het idee achter dit forum is niet dat jij alleen geholpen wordt, maar dat anderen er (ooit) ook van profiteren. Als je dus al tips of code of whatever ontvangt, doe dat dan middels dit forum...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Srry...
Het was niet de bedoeling om het voor mij alleen te houden...
Het was niet met opzet...

edit: als ik mijn code volledig ontwikkelt heb, zal ik ze hier ook posten...

[ Voor 29% gewijzigd door Verwijderd op 06-06-2008 15:05 ]


Acties:
  • 0 Henk 'm!

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 20:24
@RobIII; Ik zal de code publiekelijk maken (was dat iig ook al van plan maar nog niet aan toegekomen helaas). Vanavond meer hierover...

Acties:
  • 0 Henk 'm!

Verwijderd

Met XMLhttpRequest is het mogelijk data (niet alleen xml-bestanden zoals de naam doet vermoeden) binnen te slepen in een pagina (client-side) zonder de pagina te hoeven herladen, en dus ongemerkt.

Verder kan je gebruik maken van Script.aculo.us die zorgt die kan zorgen voor het invullen van een formulier binnen 30 seconden (kijk maar eens naar wrts.nl) ;)

Veel succes in ieder geval

[ Voor 81% gewijzigd door Verwijderd op 06-06-2008 18:16 ]


Acties:
  • 0 Henk 'm!

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 20:24
Ok, mijn quiz systeem (WSquiz) kun je hier vinden: klikkerdeklik.

D'r zit een readme bij voor de basis informatie. Ik hoop dat je er wat mee kunt. Vragen stellen mag altijd. Het is trouwens code die z'n taak al heeft volbracht ;) aan onderhoud doe ik verder niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
jan-marten schreef op vrijdag 06 juni 2008 @ 18:26:
Ok, mijn quiz systeem (WSquiz) kun je hier vinden: klikkerdeklik.

D'r zit een readme bij voor de basis informatie. Ik hoop dat je er wat mee kunt. Vragen stellen mag altijd. Het is trouwens code die z'n taak al heeft volbracht ;) aan onderhoud doe ik verder niet.
Zeer erg bedankt...
Ik ben het aan het uitpluizen
Pagina: 1