Script automatisch stoppen
wie kan mij helpen om een script dat telkens opnieuw word uitgevoerd via een lus na 65 minuten te laten stoppen.
- Welk operating systeem?
- Hoe voer je het uit?
En nog belangrijker:
- Waarom stopt het niet automatisch?
Ik zoek iets met time() en het dan over de opgeven tijd te laten stoppen
Ik voer het uit via de brouwser
Of gebruik je ignore_user_abort()?
Welk operating system wordt er gebruikt op de server?
Op de sever draait Linux
Die draait op de achtergrond op de server. Zorg er wel voor dat het script netjes beëindigd wordt als iets niet goed gaat of de transactie (waarvan ik hoop dat je die gebruikt) een 'roll-back doet'.
Gewijzigd op 04/09/2019 13:15:18 door - Ariën -
En er dan vanaf blijven (geen nieuwe time-out instellen).
Bij een cron-job (CLI aanroep) staat de timeout standaard op "oneindig", en dan blijft ie dus door draaien.
Toch zou het netter zijn om bijvoorbeeld na elke "stap" (ik neem aan dat het script iets in herhalende stappen doet) even te kijken hoe lang je al bezig bent (time() nu tov bij aanvang), en dan na 65 * 60 seconden niet meer aan een nieuwe stap te beginnen, maar gewoon netjes af te sluiten.
Direct bovenaan in je PHP script:Toch zou het netter zijn om bijvoorbeeld na elke "stap" (ik neem aan dat het script iets in herhalende stappen doet) even te kijken hoe lang je al bezig bent (time() nu tov bij aanvang), en dan na 65 * 60 seconden niet meer aan een nieuwe stap te beginnen, maar gewoon netjes af te sluiten.
Gewijzigd op 04/09/2019 13:16:25 door Rob Doemaarwat
Maar mijn voorkeur gaat uit naar cronjobs. Die draaien gewoon oneindig door (waarom is dat weggestreept?)
Gewijzigd op 04/09/2019 13:18:33 door - Ariën -
betekend set_time_limit(2 * 60)dat het script 2 minuten draait? (dit om het testen te verkorten)
Klopt. En de andere is 3900 sec = 65 minuten.
Bedankt voor jullie reacties, ik ga er mee aan het stoeien
Gewijzigd op 04/09/2019 13:35:11 door - Ariën -
Oftewel, vertel eens wat meer waarom dit alles nodig zou zijn.
En als dan toch blijkt dat je zoiets nodig hebt, dan moet je meer op zoek naar een soort van persistente variant. Als je een script start vanaf de shell dan is deze gewoon permanent op de achtergrond actief.
5 seconden Googlen, eerste resultaat leverde mij al een thread op met een heleboel links naar meer informatie.
Dan nog het volgende: het schrijven van een PHP daemon is bepaald geen sinecure als je de eerste link uit het eerdere artikel volgt. Volgens mij is daar de strekking dat je ook voorzieningen moet treffen hoe je deze daemons regelt, en dat het daemon script zelf ook met allerlei nuances rekening moet houden (met als belangrijkste wellicht server resources (geheugen en CPU)). Dit is nou niet bepaald doorsnee PHP, maar het kan.
Misschien is dat ook een argument om te kijken of je dit in eerste instantie met een "simpele" cronjob kunt regelen.
Maar om je dit advies te kunnen geven is het natuurlijk handig dat je wat meer uitleg geeft over wat je precies probeert te bereiken...
"Ik voer het uit via de browser" klinkt ook niet erg jofel. Betekent dit dat iedereen dit kan doen? Betekent dit dat je je computer/browser hiervoor aan/open moet laten staan? :/
Er moet toch wel een betere manier zijn om zoiets te automatiseren?
- Ariën - op 04/09/2019 13:17:41:
waarom is dat weggestreept?
Ik ging er eigenlijk vanuit dat het iets van een cron-job was (als het om 65 minuten gaat ...), maar toen las ik dat ie het via de browser aanriep.
Wij zitten hier niet enkel om te faciliteren en vragenstellers met een kluitje het riet in te sturen, het is (ook) onze taak om ze te adviseren. Te vaak is hier "mensen op weg helpen" synoniem met "ze versneld het ravijn in laten rijden".