Een database updaten op een bepaalde tijd ( geen cron )

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Allard Keij

Allard Keij

26/08/2014 16:12:46
Quote Anchor link
Hallo allemaal,

Ik zit met een kleine vraag.

Ik ben momenteel bezig met een nieuw projectje. Het word een project waar een soort live-stream is maar dan toch net wat anders.

Waar het op neer komt.

Ik heb een video die speelt, die moet bij iedereen starten op welk moment deze video is.
Ik kan gewoon de tijd in het aantal seconden neerzetten dus dit is geen probleem.
Nu moet ik eenmaal als de video afgelopen is een nieuwe pakken uit de database en hier weer de tijd op 0 zetten.

Iedereen die bijvoorbeeld op minuut 3 in komt tunen moet doorkrijgen dat de video op 180 seconden is.
Ook als deze afgelopen is moet bij iedereen de volgende video hetzelfde zijn.

Wat mijn idee was

Database:
ALLE VIDEOS: 4 RESULTS
id | videoURL | lengte
1 | url.. | 210
2 | url.. | 384
3 | url.. | 129
4 | url.. | 615

HUIDIGE VIDEO: 1 RESULT
id | videoURL | lengte | huidigetijd
3 | url.. | 129 | 32

PHP:
Pagina laad > Query > Huidige video

Nu zou ik dus in theorie de huidige video krijgen op de juiste tijd e.d.

De vraag is dus, wat als de video afgelopen is? Er moet een nieuwe komen in het HUIDIGE VIDEO tabel maar dit moet maar één maal gebeuren. Ik kan dus niet een php scriptje maken die dit doet aangezien elke gebruiker die aan het kijken is dus het aan zou vullen doordat iedereen het script runt.

Wat er moet gebeuren ( zoals ik het in gedachten heb ) is een global timer die het aantal seconden elke seconden upgrade en doorpushed naar de gebruiker. PHP die elke seconden kijkt of de video nog altijd aan het spelen is of deze dus de eindtijd bereikt heeft. Vervolgens als de eindtijd bereikt is gewoon opnieuw zijn results haalt uit de database wat de nieuwe is.

Kortom het spelen van de video's zelf gaat me denk ik wel lukken, maar het updaten naar een nieuwe video niet.

Ik kan natuurlijk een script maken die dit allemaal bijhoud en aanpast als een soort admin gedeelte maar dan zou dit script 24/7 open moeten staan in een browser en dat kan niet de bedoeling zijn.

Ik hoor graag mensen zijn ideeën hierover.

Cheers!
Gewijzigd op 26/08/2014 16:14:11 door Allard Keij
 
PHP hulp

PHP hulp

29/03/2024 06:36:25
 
Peter  Flos

Peter Flos

26/08/2014 16:30:31
Quote Anchor link
Is het belangrijk dat de video's worden afgewisseld als er niemand kijkt? En om hoeveel video's gaat het?
 
Allard Keij

Allard Keij

26/08/2014 16:39:57
Quote Anchor link
Als er niemand kijkt hoeft er ook niks te gebeuren. Zodra er één persoon kijkt ( oftewel de website oproept ) moet alles wel meteen weer gestart worden.

Het gaat hier over 1000de video's.

Ik heb het idee dat je bedoeld met het wisselen dat je een soort van host aan wil geven? Hier heb ik ook even over zitten denken maar gebruikers hoeven niet persé in te loggen oftewel hoeven geen account te hebben waardoor geen info in de database beschikbaar is over de huidige bezoeker.

Ondanks dat is het altijd maar 1 video die eruit gehaald word.

Video's zijn in dit verhaal eigenlijk niet eens belangrijk, het gaat puur om het feit dat iedereen dezelfde info moet krijgen op welk moment ze dan ook de website bezoeken.

Dit is voornamelijk alleen een url ( url naar de video ) en een getal ( het aantal seconden de video momenteel is ).
Gewijzigd op 26/08/2014 16:41:00 door Allard Keij
 
Peter  Flos

Peter Flos

26/08/2014 16:50:11
Quote Anchor link
Quote:
oftewel hoeven geen account te hebben waardoor geen info in de database beschikbaar is over de huidige bezoeker.


Als ik begrijp wat je hier zegt, is dat je geen gegevens hebt van de huidige gebruiker. Maar die heb je in principe wel, een IP Adres, UserAGENT, maar wat je ook kunt doen is een Cookie aanmaken.

Kan je van de video returnen, welke een bezoeker bekijkt, op hoeveel seconde deze is? Dan kan je namelijk een ajax request verzenden welke het aantal seconden veranderd in het aantal seconden te gaan. Iedereen bekijkt de video op hetzelfde moment, dus dat zou dan geen probleem moeten zijn.
 
Allard Keij

Allard Keij

26/08/2014 17:07:25
Quote Anchor link
Het klopt inderdaad dat bezoekers geen account hebben dus geen verdere info beschikbaar is.

Ik snap niet helemaal wat je bedoeld. Is dit het idee van een "host"?

Het proces moet eigenlijk blijven lopen nadat het gestart is.

Één maal word de gehele website gestart. Een video word in de huidigeVideo tabel gegooid en dit word nu uitgelezen als een persoon de website opent. Hier in staat dus de url naar de video zodat deze hier staat, het aantal seconden het nummer duurt. En het aantal seconden de video huidig is.

Wat eigenlijk elke seconde moet gebeuren is:
huidigeTijd + 1. Meer dan dat hoeft het eigenlijk niet te zijn.
Dan moet de server nog doen:
if huidigeTijd = videoLengte : Nieuwe video.

Dit zou makkelijk te doen zijn als dit voor elke persoon apart gedaan zou worden. Dan kun je in het script zelf gewoon elke seconden de database laten updaten.

Omdat er meerdere gebruikers van hetzelfde script gebruik maken is dit niet mogelijk. Dan zou er namelijk dit gebeuren:
ELKE BEZOEKER ELKE SECONDEN: huidigeTijd + 1.
Dan zou dus bij 10 bezoekers elke seconde huidigeTijd + 10 krijgen.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

26/08/2014 17:19:46
Quote Anchor link
Als je nu gewoon opslaat wanneer de video start (het tijdstip incl datum)?
 
Allard Keij

Allard Keij

26/08/2014 17:22:28
Quote Anchor link
Dat is het probleem, opslaan als wie?

Dit zou de server moeten doen maar niet een persoon die de website bezoekt. Dat is het probleem.

De video moet op precies de juiste seconden ( mag best enkele seconden afwijken ) starten voor iedereen wanneer ze ook besluiten de website te bezoeken.

In mijn ogen is de enige manier om dit te doen een database te laten regelen hoe ver de video is en dit door te geven aan de bezoeker.

Dit moet dan wel in de database bijgehouden worden. Elke seconden moet de tijd juist gezet worden. Dit kan niet geregeld worden door 1 persoon.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

26/08/2014 18:38:39
Quote Anchor link
>> Elke seconden moet de tijd juist gezet worden.
Zoals het klokje op de server tikt .....
 
Allard Keij

Allard Keij

26/08/2014 18:43:05
Quote Anchor link
Juist dat idee had ik ook ;).

Nu is mijn vraag hoe ik dus de server dit kan laten updaten elke seconden.
Ik kan dit niet door een cron doen maar hoe dan wel?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/08/2014 18:49:45
Quote Anchor link
even vanaf het begin. je wilt dat voor iedereen de video start op dezelfde tijd. zeg maar even zoals de televisie werkt. schakel je te laat in dan is het jammer mis je gewoon een gedeelte. Het enigste wat je dan hoeft te doen is in je database op te slaan welke video op welke tijd gaat afspelen.

Vervolgens komt een gebruiker de website bezoeken op een bepaalde tijd. je zou dan uit de database moeten halen welke video er op dat moment speelt. dat is niet zo moeilijk overigens. daarna moet je enkel nog bepalen hoeveel de gebruiker achterloopt op de starttijd van de video. daar heb je dan de servertijd voor zoals Ger al zei. peace of cake?

Toevoeging op 26/08/2014 18:51:39:

dan punt twee: zou ik kiezen voor een lifestream. dat is veel minder belastend voor je server. als immers toch iedereen dezelfde beelden moet krijgen op hetzelfde moment waarom dan niet
 
Ward van der Put
Moderator

Ward van der Put

26/08/2014 18:52:37
Quote Anchor link
Wat Ger +1 zegt, want volgens mij zie je wat "basisbeginselen" van timing over het hoofd.

>> Dit moet dan wel in de database bijgehouden worden. Elke seconden moet de tijd juist gezet worden. Dit kan niet geregeld worden door 1 persoon.

Je registreert gewoon dat de video om bijvoorbeeld 12:34 uur is gestart. Als iemand daarna om 13:45 uur langskomt, staat de timer van die video dus op 13:45 - 12:34. Dat reken je ter plekke en "on the fly" of "on demand" uit, want je hoeft daarvoor alleen de starttijd op te slaan.
 
Allard Keij

Allard Keij

26/08/2014 19:31:44
Quote Anchor link
Dat zijn allebei juiste antwoorden maar nog altijd heb ik niet het juiste idee.

Ik snap beide bedoelingen.

Maar het gaat mij echt over het punt van omschakelen.
Plus het feit is dat de video's random geselecteerd moeten worden en niet voorgeprogrammeerd op tijd.

Het klopt inderdaad dat ik netjes de tijd e.d. kan berekenen maar het gaat mij echt om het punt wat als de video is afgelopen? Dan stopt het. Ik wil juist dat op dat moment een nieuwe video erin gezet word.
De video is dus afgelopen en dan moet er een script actief worden die de nieuwe video erin schrijft.

Belasting voor de server is er niet. Ik ben namelijk een script aan het maken wat youtube video's afspeeld.

Dat is ook het gehele idee om een soort livestream te creëren uit random filmpjes. Ik gebruik gewoon de iframes van Youtube zelf waar ik al deze opties, zoals de seconde van start, door kan geven. Op deze manier wil ik dus dat iedereen hetzelfde youtube filmpje voor zijn neus krijgt (url) maar wel op dezelfde tijd kan kijken en je dus inderdaad zoals het TV idee een deel mist mocht je later binnenkomen.

Wat dus mogelijk is zou een script zijn die standaard video's draait op de TV methode, maar dan zelf elke keer een nieuwe video erin gooit op de tijd dat het vorige filmpje afgelopen is. Zonder dat het voorgeprogrammeerd word.
 
Ward van der Put
Moderator

Ward van der Put

26/08/2014 19:41:29
Quote Anchor link
Welk onderdeel van de vergelijking starttijd + speelduur = eindtijd begrijp je niet?
 
Allard Keij

Allard Keij

26/08/2014 23:56:06
Quote Anchor link
Nee dat idee snap ik.

Volgensmij leg ik het totaal verkeerd uit of ik zit in een complete braincrash.

Doe de:
starttijd + speelduur = eindtijd ( NIEUWE VIDEO ).
Hoe plaats ik die nieuwe video. Wie doet dat voor me? De server? Dan moet die wel aanwijzingen krijgen. Maar hoe?
 
Peter K

Peter K

27/08/2014 07:23:00
Quote Anchor link
Je zult dan toch aan cronjobs oid moeten denken.
 
Ward van der Put
Moderator

Ward van der Put

27/08/2014 09:54:31
Quote Anchor link
Wie start de eerste video? Ik neem aan dat dit een bezoeker is, want het heeft geen zin om aan een "uitzending" te beginnen als er nul kijkers zijn.

Die starttijd sla je ergens op. Aansluitend kun je aan de hand van de speelduur van alle video's in de afspeellijst uitrekenen waar je op elk moment in een van de video's bent beland. Heb je bijvoorbeeld (vereenvoudigd) twee video's van een uur, dan ben je anderhalf uur na de eerste start dus precies halverwege de tweede video.
 
Peter K

Peter K

27/08/2014 12:55:49
Quote Anchor link
Je kunt het inderdaad ook al volgt doen:

Gebruiker komt kijken: voer in de database de exacte starttijd in seconden in.
Zodra de gebruiker over gaat naar filmpje 2 kun je weer een exacte starttijd invoeren.

Zodra er nu een gebruiker online komt kun je dus het filmpje openen vanaf TIJD_NU - EXACTE_STARTTIJD.
 
Allard Keij

Allard Keij

29/08/2014 16:47:32
Quote Anchor link
Werd me allemaal toch net even wat te moeilijk ( was ook niet echt een standaard idee wat je zelf maakt ).

Heb uiteindelijk gewoon een broadcast systeem gekocht waar ik een compleet DJ panel bij kreeg om alles te kunnen regelen.

Toch allemaal bedankt voor de hulp!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.