Ik ben een script aan het ontwerpen om zoveel mogelijk serverkracht te besparen. Vanmiddag ging ik op zoek naar een phpfunctie om ervoor te zorgen dat het script in gedeeltes laadt -> sleep().

Als de tijd in de sleep() function hoger wordt, is het dan meer serverbelastend? Waarom denk ik dit? Het script staat stil, maar staat dan nog in het geheugen van de server.
Ik zie niet in waarom je je script zou opspitsen met sleep om de belasting te verminderen. Misschien wordt de processor wel minder belast, maar je geheugen blijft idd vol zitten. Als veel mensen dit script tegelijk aanroepen is je geheugen waarschijnlijk eerder overbelast dan je processor.
Wat voor een script is dit dan dat het zo zwaar is?
Het is voor een cronjob, en ik heb nu al 15 cronjobs los van elkaar en ik wil dit tot 3/4 bestanden integreren zodat het voor mij overzcihtelijker is. Ik heb 15 cronjobs omdat ik zo min mogelijk de server wil belasten, maar nu wil ik het in 1 bestand doen (met pauses van 10 sec ofzoiets)
Waarvoor heb je überhaupt zoveel cronjobs? Als die bestanden niet bij elkaar horen, dan moet je ze niet samenvoegen. Als je per se die cronjobs nodig hebt, voer ze dan 's nachts uit, dan zijn er vaak minder gebruikers op een website. Wat is er zo intensief aan die bestanden?
Een sleep() houdt het proces alleen maar op. Alleen gebruiken indien het nodig is, verder niet.
Aan de andere kant, als je een zware loop hebt die je server echt een paar minuten bezig houdt, is het logisch om er af en toe een sleep doorheen te gooien (of liever een usleep), zodat andere request afgehandeld worden door apache. Als je elke 5 seconden 500milliseconden of 1 seconde een sleep doet, wordt de rest tenminste wel beantwoord.

Het geheugen kan beperkend zijn, maar voor dat soort details beschikken we over te weinig details.
Ik zou geen cron-jobs slechts bij elkaar voegen omdat je de code in 1 bestand wilt hebben. Faalt 1 cron-job, dan falen alle anderen ook.

Ik vraag me trouwens af of het echt nut heeft om een "intensief" proces te voorzien van sleep-aanroepen. Ik denk dat het beter loont om het proces gewoon een lagere prioriteit te geven dan bijvoorbeeld Apache en de database-server hebben. Ook lijkt het me sterk dat een cron-job snel zo intensief wordt dat Apache niet meer antwoordt... in mijn ervaring werkt die nog prima onder een behoorlijke cpu-load. Ik maak me eerder druk om bijvoorbeeld de database.

Maar wat doen de cron-jobs? Zijn ze intensief door berekeningen, of door veel I/O- of database interacties?
storeman schreef op 19.06.2008 21:08
Aan de andere kant, als je een zware loop hebt die je server echt een paar minuten bezig houdt, is het logisch om er af en toe een sleep doorheen te gooien (of liever een usleep), zodat andere request afgehandeld worden door apache. Als je elke 5 seconden 500milliseconden of 1 seconde een sleep doet, wordt de rest tenminste wel beantwoord.

Het geheugen kan beperkend zijn, maar voor dat soort details beschikken we over te weinig details.


het gaat hier over cronjobs, niet over PHP in een web implementatie.
Ik denk dat die sleeps niet nodig zullen zijn, een OS houd zelf bij welk proces lang bezig is, en als er dan een ander proces doorheen komt voor een kleine taak krijgt die gewoon voorrang.
@Adje:

Okee, ik meende dat het ging om verschillende requests die intensief zijn.

Overigens heb ik andere ervaringen met processon, apache blokkeert als een een script intensief bezig laat zijn, een andere request timed out.

Reageren