[PHP] command line php script <> deamon? *

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik ben bezig met een online beheer tool voor mijn server (linux)..
ik wil via deze tool bv mailaliassen, popboxen, mysql databases etc aanmaken/verwijderen/wijzigen..

Momenteel heb ik het zo dat in via de crontab een php script wordt uitgevoerd (niet via het web, maar in de command line laat maar zeggen) Dit werkt perfect aleen wordt dit script om de 5 min uitgevoerd en kijkt dan na de eventuele opdrachten die hij moet uitvoeren.

Ik wil de tijd van 5 min graag naar beneden brengen zodat een bv een pop-box sneller is aangemaakt.

Graag wil ik jullie mening horen.
Is het aan te raden om de crontab elke 1 min het script uit te voeren?
Is er een manier om een soort php-script deamon te maken die constant kijkt of er een wijziging is?

edit:

Momenteel wordt alles opgeslagen in een MySQL database, als er bv een popbox aangemaakt moet worden wordt dit keurig netjes in de database opgeslagen en krijgt zo een status ADD mee, vervolgens kijkt het php script naar de status en voert zijn opdrachten uit aan de hand van de status.

[ Voor 17% gewijzigd door Verwijderd op 21-08-2003 22:32 ]


  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 08-09 21:45

RSpliet

*blink*

Waarom in PHP niet alles real-time doen?

[ Voor 3% gewijzigd door RSpliet op 21-08-2003 22:34 ]

Schaadt het niet, dan baat het niet


Verwijderd

Topicstarter
S3v3n_0f_n1n3 schreef op 21 August 2003 @ 22:34:
Waarom in PHP niet alles real-time doen?
Als jij bedoelt dat een klant een popbox aanvraagt en php doet realtime het exec commando?... dan zit ik volgens mij met de beveiliging, want dan kunnen mijn gebruikers het ook...

Ik doe het via de contab omdat die "root" permissies heeft en dus alle commando's zoals adduser etc kan uitvoeren.

  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 08-09 21:45

RSpliet

*blink*

hmm... in principe kan dit best op 1 min gezet worden, van mij part op 15 seconden, als de serverload maar niet te groot word, en hij niet onnodig vaak word uitgevoert. Als jij een PHP script aanroept terwijl er geen **** te doen is, is dat natuurlijk zonde van de resources(kan je veel beter n DPC-koe van laten grazen ;)). Ik denk dat 5 minuten dan echt nog niet zo'n gekke interval is, tenzij je natuurlijk 5 aanvragen per minuut krijgt. Kijk eens hoevaak zo'n popbox word aangevraagd, dan kan je daar n beetje mee goochelen.

Checken of iets gewijzigd is, dat doet dat PHP script ook al. Je zou natuurlijk aanvraag een tekstbestanje kunnen laten schrijven, die verwerking eerst probeert te vinden. Is dat tekstbestandje er niet, die(); issie er wel, doe dan de rest. Maar ik betwijfel of dit veel winst zal opleveren.

edit:
Beetje offtopic, maar heb jij echt een AMD 200+? denk dat t meer richting de 2000 gaat ;) (zie signature)

[ Voor 8% gewijzigd door RSpliet op 21-08-2003 22:54 ]

Schaadt het niet, dan baat het niet


Verwijderd

Topicstarter
S3v3n_0f_n1n3 schreef op 21 August 2003 @ 22:52:
edit:
Beetje offtopic, maar heb jij echt een AMD 200+? denk dat t meer richting de 2000 gaat ;) (zie signature)
Hehe, ik zag het ook net en dacht "hog hoelang zal het duren dat iemand het ziet en een reactie plaats.." nou... nog geen 1 min dus...

Verwijderd

Topicstarter
Tevens zit ik te denken om het script op te splitsen in 2 bestanden.... 1 voor de apache config en 1 voor de rest, want stel de server wordt drukker en steeds moet die als het nodig is apache opnieuw reloaden... nou.. je script zal maar elke min lopen en er is een grapjas die steeds zijn instellingen wijzigt :-).... pop etc aanmaken is geen probleem, ik denk dat ik dat om de min ga doen ofzo en de apache om de 5 min in eerste instantie...

  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 08-09 21:45

RSpliet

*blink*

Ook apache reloaden alleen als t nodig is neem ik aan. Lijkt misschien wat overbodig, maar als iemand een REMOVE actie uitvoert op een nog niet gevolgde ADD actie, neem ik aan dat ze niet allebei uitgevoert word, maar het elkaar opheft. Dan hoef je ook minder vaak Apache te reloaden en de rest uit te voeren ;)

Schaadt het niet, dan baat het niet


Verwijderd

Topicstarter
S3v3n_0f_n1n3 schreef op 21 August 2003 @ 23:07:
Ook apache reloaden alleen als t nodig is neem ik aan. Lijkt misschien wat overbodig, maar als iemand een REMOVE actie uitvoert op een nog niet gevolgde ADD actie, neem ik aan dat ze niet allebei uitgevoert word, maar het elkaar opheft. Dan hoef je ook minder vaak Apache te reloaden en de rest uit te voeren ;)
apache reloaden doet die inderdaad alleen als het nodig is, dat laatste wat je zei zit er eigenlijk nog niet in, ik neem het wel gelijk mee... thats voor de opmerking :-)

Acties:
  • 0 Henk 'm!

Verwijderd

Ik ben ooit ook een keer aan zoiets begonnen.
En dat deed ik gewoon realtime.
Ik had een soort van wrapper in C gecode..
Die was suid (rechten van root) en via die wrapper konden commando's als root uitgevoerd worden, dmv van een password uiteraard.
PHP execute dan die wrapper met de benodigde argumenten.

[ Voor 12% gewijzigd door Verwijderd op 22-08-2003 09:06 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Probeer een perl een daemon te schrijven die aan een ip adres en poort hangt.
stuur via een tcp connectie vervolgens commando's naar je daemon.

uit ervaring : werkt perfect !

Acties:
  • 0 Henk 'm!

Verwijderd

achja ligt eraan hoeveel tijd je eraan wilt besteden :)
dat zelfde scriptje elke minuut runnen heeft waarschijnlijk t zelfde resultaat.
maak wel iets van een lockfile aan zodat t scriptje (als t lang duurt) niet 10keer naast elkaar draait maar checkt of hij al bezig is.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 22 augustus 2003 @ 09:50:
Probeer een perl een daemon te schrijven die aan een ip adres en poort hangt.
stuur via een tcp connectie vervolgens commando's naar je daemon.

uit ervaring : werkt perfect !
Ja dat is ook een oplossing.. k zou je data alleen wel encrypten voor de zekerheid :)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 23 August 2003 @ 07:46:
[...]

Ja dat is ook een oplossing.. k zou je data alleen wel encrypten voor de zekerheid :)
uiteraard maar daar hebben we https voor :P

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:14
Laat het PHP script gewoon op de console aanroepen wanneer er een aanvraagf wordt opgeslagen;

<?php
passthru("/usr/local/bin/php -f /home/script.php > /dev/null &");
?>

Acties:
  • 0 Henk 'm!

Verwijderd

ik heb ook zoiets gedaan en het werkt bij mij zo: de config files hebben als group nobody en als perm dat group mag schrijven en lezen, dan laat ik php die configs aanpassen en dan plaats ik ergens een bestandje, dan heb ik een crontab script dat elke 1 min checkt of er ergens een leeg bestandje staat, zo ja, dan voert hij een restart commando voor de deamon uit (zoals rndc reload, voor dns)
Pagina: 1