Hallo,
Ik heb in een project van mij een wachtrij geïmplementeerd, hier komen opdrachten in die later uitgevoerd gaan worden. Bijvoorbeeld:
User 1 doet een aantal handelingen en de opdracht word geschreven naar de database, deze moet morgen om 8 uur uitgevoerd worden, de volgende dag om 8 uur word het uitgevoerd als iemand op de site is, zo niet dan word het zo snel mogelijk uitgevoerd. Dan op de volgorde van wat eerst gebeurd is het eerste.
Alleen het probleem is, als er nu 2 mensen tegelijkertijd op de site komen dan word het 2 keer uitgevoerd. Ik heb niet getest als dit zo is maar dit is logisch omdat php niet sessie voor sessie afhandel als het goed is.
Ik wil er dus gaan voor zorgen dat de opdrachten maar 1 keer uitgevoerd gaan worden, dit kan je dan doen op de volgende manier.
Je schrijft naar de database als er opdrachten uitgevoerd gaan worden, hier komt dan ook een tijd bij te staan. Duurt dit langer dan 3 seconden dan word dit afgebroken op een punt waar dit mogelijk is en dan word de volgende keer de opdrachten uitgevoerd. Zo kan het script niet blijven hangen als er wat mis gaat. De pagina word pas getoond als allen opdrachten uitgevoerd zijn, duurt dit te lang dan krijgt de gebruiker een melding. (de opdrachten moeten namelijk uitgevoerd worden voordat iemand de content mag zien.)
Ik vind dit eigenlijk geen goede manier om zoiets op te lossen, of kan het niet anders dan op een methode zoals hier boven? Er zullen gemiddeld elke 5 seconden +- 10 – 500 opdrachten zijn die uitgevoerd moeten gaan worden.
Heeft iemand tips hoe dit anders te doen? Ik vraag niet als iemand mij een script wilt sturen, ik wil alleen weten als ik zo goed aan het denken ben, zo niet dan zou ik graag willen weten hoe ik dit anders kan doen.
Edit: Kleine aanpassing alinia 2
Ik heb in een project van mij een wachtrij geïmplementeerd, hier komen opdrachten in die later uitgevoerd gaan worden. Bijvoorbeeld:
User 1 doet een aantal handelingen en de opdracht word geschreven naar de database, deze moet morgen om 8 uur uitgevoerd worden, de volgende dag om 8 uur word het uitgevoerd als iemand op de site is, zo niet dan word het zo snel mogelijk uitgevoerd. Dan op de volgorde van wat eerst gebeurd is het eerste.
Alleen het probleem is, als er nu 2 mensen tegelijkertijd op de site komen dan word het 2 keer uitgevoerd. Ik heb niet getest als dit zo is maar dit is logisch omdat php niet sessie voor sessie afhandel als het goed is.
Ik wil er dus gaan voor zorgen dat de opdrachten maar 1 keer uitgevoerd gaan worden, dit kan je dan doen op de volgende manier.
Je schrijft naar de database als er opdrachten uitgevoerd gaan worden, hier komt dan ook een tijd bij te staan. Duurt dit langer dan 3 seconden dan word dit afgebroken op een punt waar dit mogelijk is en dan word de volgende keer de opdrachten uitgevoerd. Zo kan het script niet blijven hangen als er wat mis gaat. De pagina word pas getoond als allen opdrachten uitgevoerd zijn, duurt dit te lang dan krijgt de gebruiker een melding. (de opdrachten moeten namelijk uitgevoerd worden voordat iemand de content mag zien.)
Ik vind dit eigenlijk geen goede manier om zoiets op te lossen, of kan het niet anders dan op een methode zoals hier boven? Er zullen gemiddeld elke 5 seconden +- 10 – 500 opdrachten zijn die uitgevoerd moeten gaan worden.
Heeft iemand tips hoe dit anders te doen? Ik vraag niet als iemand mij een script wilt sturen, ik wil alleen weten als ik zo goed aan het denken ben, zo niet dan zou ik graag willen weten hoe ik dit anders kan doen.
Edit: Kleine aanpassing alinia 2