[PHP] Script continue laten draaien -> serverload?

Pagina: 1
Acties:
  • 237 views sinds 30-01-2008
  • Reageer

Onderwerpen


Verwijderd

Topicstarter
Hallo!

Ik ben een beetje met een nieuw idee bezig wat ik had voor een website, en nu moet daarbij (denk ik) continue (24/7) een PHP script draaien, die dmv een while lus steeds iets moet controleren en zonodig soms iets kleins uitvoeren.

Is dit haalbaar voor een server? Of zou die daarvan helemaal doordraaien?
Ik verwacht er niet al teveel hits voor. En de hits die er zullen zijn, zullen niet al te zware processen aanroepen.

Alvast tnx!

  • Cartman!
  • Registratie: April 2000
  • Niet online
waarom laat je het scriptje niet elke 30min uitvoeren bijvoorbeeld ?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Ik ben een beetje met een nieuw idee bezig wat ik had voor een website, en nu moet daarbij (denk ik) continue (24/7) een PHP script draaien, die dmv een while lus steeds iets moet controleren en zonodig soms iets kleins uitvoeren.
Tenzij je hem laat slapen, kan het wel. Er zijn echter betere methodieken, zoals cronjob of task scheduler.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • jurri@n
  • Registratie: Maart 2000
  • Laatst online: 21-09 12:37
PHP 24/7 laten draaien? Dan zit je met de maximale tijd dat een php-script mag draaien toch? Uit security-redenen wordt je script dan na x seconden / minuten gestopt. :?

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

jurri@n schreef op 26 februari 2004 @ 15:21:
PHP 24/7 laten draaien? Dan zit je met de maximale tijd dat een php-script mag draaien toch? Uit security-redenen wordt je script dan na x seconden / minuten gestopt. :?
Dat kun je uitschakelen / overriden :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

Topicstarter
Ja, ik had dus ook al aan cronjobs gedacht, maar ik wil dat er elke 5 minuten iets uitgevoerd kan worden....Moet ik dan een cronjob maken die elke 5 minuten een PHP bestand aanroept, en daarin wordt gekeken of er iets gedaan moet worden?
Lijkt mij eigenlijk toch beter, maar alsnog, trekt een server dat? En genereert dat niet teveel load, dan mijn toekomstig hosting bedrijf gaat klagen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 26 februari 2004 @ 15:26:
Ja, ik had dus ook al aan cronjobs gedacht, maar ik wil dat er elke 5 minuten iets uitgevoerd kan worden....Moet ik dan een cronjob maken die elke 5 minuten een PHP bestand aanroept, en daarin wordt gekeken of er iets gedaan moet worden?
Lijkt mij eigenlijk toch beter, maar alsnog, trekt een server dat? En genereert dat niet teveel load, dan mijn toekomstig hosting bedrijf gaat klagen?
Ik vraag me af of je hosting bedrijf het echt leuk gaat vinden dat je scripts eindeloos gaan executen. Ik betwijfel het eigenlijk.
Maar wat is er tegen een cronjob?

[ Voor 3% gewijzigd door gorgi_19 op 26-02-2004 15:27 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Is geen probleem, ik heb hier ook 24/7 een php script draaien dat iedere kwart seconde kijkt of er nieuwe data op een socket binnengekomen is. Ik draai het wel met de php binary, dus:
code:
1
php component.php
Heeft practisch geen load op m'n pentium 200 (na een kwartier 1 seconde processortijd verbruikt)

Ik heb het vermoeden dat dit op den duur efficienter is dan een cronjob aangezien daar iedere keer (iedere 5 minuten bij jou dus) een complete executable (php in dit geval) geladen moet worden, geheugen gealloceerd, script geladen, uitvoeren, geheugen vrijgeven. Lijkt me dat een cronjob veel belastender is voor je processor.

[ Voor 36% gewijzigd door Verwijderd op 26-02-2004 15:32 ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 26 februari 2004 @ 15:26:
En genereert dat niet teveel load, dan mijn toekomstig hosting bedrijf gaat klagen?
je moet dus een hosting bedrijf gaan zoeken wat cronjobs ondersteund, want in dat geval kan en mag het dus ;)

Verwijderd

Topicstarter
Verwijderd schreef op 26 februari 2004 @ 15:29:
Ik draai het wel met de php binary
Kan je daar iets meer uitleg over geven, want dat is blijkbaar niet de 'normale' manier?

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 26 februari 2004 @ 15:32:
[...]


Kan je daar iets meer uitleg over geven, want dat is blijkbaar niet de 'normale' manier?
ehm hij heeft er zelfs een voorbeeld bij gedaan :X

vanaf de command line dus, een php file als "shell" scriptje dus

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Maar hij start zelf dus ook de binary en vervolgens zegt die dat dat efficienter is dan de executable (binary) te starten etc.. :)

edit:

Oh ik snap nu dat ie hem maar 1x start en dat het script zelf oneindig 'loopt'

[ Voor 26% gewijzigd door Bosmonster op 26-02-2004 15:38 ]


Verwijderd

Topicstarter
sorry, maar om nou te zeggen dat
code:
1
php component.php

voor een 'binary'/'shell' n00b een duidelijk voorbeeld is....(vooral als die niet weet waar het over gaat....)

Maar okey, dus een script dat je vanuit dos-modus aanroept? Maakt dat verschil uit dan? Want je roept het maar 1 keer aan neem in aan?

[ Voor 7% gewijzigd door Verwijderd op 26-02-2004 15:39 ]


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Verwijderd schreef op 26 februari 2004 @ 15:29:
Is geen probleem, ik heb hier ook 24/7 een php script draaien dat iedere kwart seconde kijkt of er nieuwe data op een socket binnengekomen is. Ik draai het wel met de php binary, dus:
code:
1
php component.php
Heeft practisch geen load op m'n pentium 200 (na een kwartier 1 seconde processortijd verbruikt)

Ik heb het vermoeden dat dit op den duur efficienter is dan een cronjob aangezien daar iedere keer (iedere 5 minuten bij jou dus) een complete executable (php in dit geval) geladen moet worden, geheugen gealloceerd, script geladen, uitvoeren, geheugen vrijgeven. Lijkt me dat een cronjob veel belastender is voor je processor.
Denk je echt dat het minder load kost om elke 5 minuten een script uit te voeren in plaats van dat je het elke kwart seconden deze controle laat doen :?
Verwijderd schreef op 26 februari 2004 @ 15:37:
sorry, maar om nou te zeggen dat
PHP:
1
php component.php

voor een 'binary'/'shell' n00b een duidelijk voorbeeld is....(vooral als die niet weet waar het over gaat....)

Maar okey, dus een script dat je vanuit dos-modus aanroept? Maakt dat verschil uit dan? Want je roept het maar 1 keer aan neem in aan?
offtopic:
DOS :X
Het maakt verschil dat je webserver dan niet mee hoeft te runnen. Ook kun je deze regel eenvoudig opnemen in cron :)

[ Voor 26% gewijzigd door Spider.007 op 26-02-2004 15:40 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Hangt allemaal nogal af van wat je wilt doen. Als het alleen maar een xmlletje wegschrijven is ofzo dan hoeft dat echt niet 4x per seconde maar is 1x per minuut ofzo ruim voldoende.

Verwijderd

Topicstarter
Mijn idee is dat ik elke 5 minuten wil kijken of een (extern) bestand aangeroepen moet worden. Dit komt allemaal in een mysql tabel te staan.
Dan lijkt(/leek) mij het effiecenter om continue een php-script te laten draaien, die dan telkens kijkt of er een bestand aangeroepen moet worden, dan voor elk bestand een cron aan te maken. (btw, het wordt niet de bedoeling dat er ook elke keer een query gedaan wordt, daar ga ik nog iets op verzinnen :P)

Verwijderd

Als je het dos noemt... ik noem het een shell, aangezien de meeste webservers unix zijn.

En die opmerking hierboven dat je het dan in je cron kan zetten is niet van toepassing omdat het script zelf de tijdsintervallen in de gaten houdt, en niet cron.

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Als je de binary gebruikt, let dan wel op dat je de CLI php binary gebruikt en niet de CGI php binary.
http://www.php.net/manual/en/features.commandline.php

There's no place like 127.0.0.1


Verwijderd

Topicstarter
ach, dos...whatever, komt op hetzelfde neer :P (i know...unix beter, hebben ze andere topics voor :P)

Maar ik denk dus dat het wel oke is om 1 bestand continue te laten draaien...tnx voor jullie meningen!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 26 februari 2004 @ 15:53:
Maar ik denk dus dat het wel oke is om 1 bestand continue te laten draaien...tnx voor jullie meningen!
ik vind dat nogal overkill en niet echt nuttig als ik eerlijk moet zijn, als je enkel wat taken hoeft uit te voeren om de 5 minuten (of zelfs om de minuut) is een cronjob veel beter imo.
Daarmee heb je immers niet steeds een proces open staat wat zit te wachten wat dus extra cpu tijd vergt.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Verwijderd schreef op 26 februari 2004 @ 15:44:
Mijn idee is dat ik elke 5 minuten wil kijken of een (extern) bestand aangeroepen moet worden. Dit komt allemaal in een mysql tabel te staan.
Dan lijkt(/leek) mij het effiecenter om continue een php-script te laten draaien, die dan telkens kijkt of er een bestand aangeroepen moet worden, dan voor elk bestand een cron aan te maken. (btw, het wordt niet de bedoeling dat er ook elke keer een query gedaan wordt, daar ga ik nog iets op verzinnen :P)
Dit is dus precies waar cronjobs voor bedoeld zijn.

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Eventueel kun je nog aan een pseudocron denken, een php script dat checkt of iets had moeten doen sinds de laatste keer dat ie aangeroepen is.
Pseudocron

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Skaah schreef op 27 februari 2004 @ 09:56:
Eventueel kun je nog aan een pseudocron denken, een php script dat checkt of iets had moeten doen sinds de laatste keer dat ie aangeroepen is.
Pseudocron
Maar dus geen garantie geeft dat je om een bepaalde tijdsinterval een actie uitvoert.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
Overigns kun je ook 1 bestand als cron uit laten voeren en daar 20 includes ana hangen. Dat is zeker efficiënter als 20 cronjobs...

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Tnx allemaal!

Mijn conclusie:
Ik zet 1 cron, en die roept elke 10 minten een script aan.
Dat script kijkt dan dmv gegevens uit de db of het remote bestanden aan de hand van de tijd aan moet roepen, en doet dat dan.

Waarom niet voor elke pagina een cron:
Omdat ik niet vanuit mijn php scripts een cron kan zetten, en het aantal remote bestanden dat aangeroepen moet worden staat niet vast.

Bedankt voor het meedenken!
Pagina: 1