Hallo Mensen,

Ik moet een php scriptje elke seconden laten draaien, dit kan niet met een enkele cronjob weet ik.
Die gaan maar tot 1 minuut.

Nu vroeg ik me af, of 60 cronjobs die allemaal een minuut speling hebben succesvol zou zijn?
Of moet ik toch echt op zoek gaan naar een alternatief?
ja inderdaad zoiets als bidrivals.

Maar wat moet ik dan doen met een cronjob, want die is maar gelimiteerd tot 1 minuut.
Ik kan wel een while loop gebruiken en dan elke keer sleep(1) maar dit werkt niet echt briljant. omdat het maar 59,63 wordt gedraaid van de 60 sec.
Dat is dus 0,37 seconden dat ik mis.

Of is het verstandig om 60 cronjobs in te stellen met allemaal 1 seconde speling?
Grappenmakers, lezen jullie ook?

Ik zal het proberen uit te leggen met een tijdslijn

0.00 Product wordt aangemaakt

0.30 Iemand kijkt maar er zijn nog meer dan 3 seconden dus gebeurt niks

0.57 de 3 seconden zijn voorbij maar niemand kijkt. Met je cronjob per seconden (mag je zelf nog uitzoeken hoe) hadden we nu al 56 nutteloze requests gehad

1.27 Iemand kijkt, er is nog minder dan 3 seconden over ( -27 om precies te zijn) we maken het bod aan en geven het de tijd 0.57 mee waardoor het lijkt alsof het toen al plaatsvond.

Oftewel mezelf even quoten
TJVB tvb op 15/09/2010 11:23:43

Je kunt mij nog steeds niet duidelijk maken wat het probleem is als dat later gebeurt en dan alles in 1 keer "inhaalt" als er niemand kijkt is het ook niet erg als de data achterloopt.


Je doet namelijk een onnodig aantal requests om te kijken of de tijd al voorbij is. En je probeert php te misbruiken op een manier waarvoor het niet bedoelt is.
Nee dan nog niet.

Als je de gebruiker de mogelijkheid wil geven een autobid te gebruiken, kan dit nog steeds zonder zo'n overdreven cronjob.

Stel:
Jantje plaatst een bod op product X.
jantja gaat offline, niemand is online op de website. Jantje heeft echter wel autobieden aangezet.
Pietje komt op de site, en plaatst een bod op product X. Het systeem ziet: "He! Pietje plaatst een bod, maar jantje had auto biedingen aanstaan! Dan plaats ik er een bod overheen als het aan de criteria voldoet!"

Oftewel: Je hoef toch geen bod te plaatsen als er geen user input is geweest. Het is niet zo dat er zomaar uit het niets een bod geplaatst moet worden, daar is een aanleiding voor. En die aanleiding is een user input.
Dat de user input neit van Jantje komt, maar van Pietje, dat maakt niet uit.
Niek en ik zitten op dezelfde lijn, waarschijnlijk heeft hij ook al vaker met het bijltje gehackt
Okej best logisch op zich, maar het wordt een site net zoals bidrivals.

Producten lopen af op tijd, dit kan op elke tijdstip gebeuren.

Wat jullie uitleggen zou dat betekenen dat als jantje een autobied aanzet voor productA om 16:00. ProductA begint pas om 20:00. Veiling loopt door omdat iedereen overbied tot zeg maar 00:00, als dan niemand online is en een product stopt om 00:00.

Maar niemand is online dus geen user input.
Maar de veiling is technisch wel gestopt omdat het over zijn tijd is.
Eigenlijk moet meteen een mailtje worden verstuurd hey de veiling is geeindigt en jij hebt gewonnen.
Maar dit zou bij jullie pas bij de volgende user input zijn en als de volgende user input pas bijvoorbeeld om 8 uur sochtends is??
Eventueel zou je dan elk uur een cron uit kunnen voeren om dat te testen. Dit is veel minder zwaar dan elke seconden.
Verder moet je natuurlijk zorgen dat ze geen autobieden kunnen instellen op een veiling die nog niet bestaat.
Dus jullie raden me aan om, achter af autobieders op te tellen.
En dan zou ik bijvoorbeeld 1 x in de 5 minuten een cronjob kunnen laten uitvoeren of als er een userinput is die kijkt of er autobieders zijn zoja dan moet de tijd aangepast worden.
Tot dat er geen autobieders meer zijn en dan eindigen.
Inderdaad.
Als je inderdaad op een bepaald tijdstip een mail wil verzenden heb je geen andere keus.

Maar dan moet je jezelf afvragen of dat echt iedere 5 minuten nodig is.
Kan dit niet ieder uur?

Niemand kijkt zijn mail namelijk iedere seconde, en in de mail staat dan wel de daadwerkelijke afloop datum.
En het allermooiste is nog: later kun je altijd nog besluiten dat je er 2x per uur van maakt bijvoorbeeld (met de */2 syntax)
Niek s op 15/09/2010 14:52:25

later kun je altijd nog besluiten dat je er 2x per uur van maakt bijvoorbeeld (met de */2 syntax)


*/2 betekent elke 2 minuten.
*/30 is elk half uur.
Okej topic closed.
Danku allemaal!

Reageren