PHP "task manager"

Status
Niet open voor verdere reacties.

Lapixx

Gebruiker
Lid geworden
2 mei 2008
Berichten
132
Hoi,

ik wil graag binnekort een server gebruiken, en om het beheer ervan wat makkelijker te maken dacht ik dat het een goed idee was om met PHO een soort task manager te maken, om op afstand processen die op de server staan te kunnen opstarten.

Ik heb wat rondgezocht, en vond een aantal manieren om processen op de achtergrond te starten (zodat PHP niet stilhangt totdat het programma sluit), maar het is me niet echt duidelijk.

Hoofdzaak is dat ik in PHP, onder Windows (voor de applicaties) een programma kan starten (op de achtergrond, zodat PHP doorwerkt), en kan beëindigen. Als het even kan zou ik ook de status (gestart/beëindigd) van het programma willen zien. Kan iemand mij in de juiste richting helpen?

Alvast bedankt,
Lapixx
 
hmm interessant projectje...

maar ik denk niet dat je dit gaat lukken met alleen php..

je moet goed documenteren wat je wilt bijv:
- Weergeven lopende processen.
- Stoppen processen
- Starten processen
- Veiligheid voordat hij online gaat. goede login oid.

vervolgens kijk je hoe kan ik dit realiseren?
- weergeven lopende processen.
>> ik ben geen super-php-er dus ik heb houtje touwtje oplossingen voor alles, maar wel creatief lol! anyways, oke je moet een batch bestand hebben met een loop daarin die het de processen elke 5 seconden ophaalt en wegschrijft. open een command prompt en zet dit neer zonder quotes "wmic process get description,executablepath > C:\proces.txt" de processen lijst wordt nu daarin opgeslagen en kun je vervolgens uitlezen met php.

voor het starten en stoppen zijn ook commands maar ik heb geen idee hoe je die kan koppelen aan een php script.

ik hoop dat je er wat aan hebt :-)
 
Op PHP.net staan nogal veel functies om een extern programma uit te voeren, maar ik heb hier gewoon geen ervaring mee en vind het niet al te duidelijk.

http://us3.php.net/manual/en/book.exec.php

Wanneer je een programma kan starten (in de achtergrond, en hiervoor zijn ook alweer tig verschillende voorbeelden op PHP.net, dus ik heb geen idee wat het 'beste' is) kun je inderdaad met batch files *alles* laten regelen. PHP start een batch file op, batch file schrijft het weg naar een tekstbestandje en PHP kan de resultaten lezen... Overigens zou het dus wel mogelijk moeten zijn om argumenten door te sturen (vanuit PHP, naar batch file), maar ik neem aan dat dat moet kunnen.

Dus de eerste prioriteit is het vinden van een script dat een proces (in Windows) kan starten, en ook argumenten kan doorgeven (voor eventuele batch files).

Login procedure hoeft niet al te speciaal te zijn, voor het zelfde geld programmeer je je wachtwoord in het PHP script, het gaat me er gewoon om dat ik op afstand applicaties kan starten. Misschien zijn er betere manieren om dit te doen (zonder PHP?), maar gezien PHP vrijwel overal makkelijk te installeren is, je op die manier overal kan inloggen en processen kan beheren, leek me dit makkelijker dan bijvoorbeeld een schermovername op afstand (wat je niet binnen 3 seconden in de browser tevoorschijn tovert).

In ieder geval, alvast bedankt voor je reactie :)
 
er is ook een webmin voor windows. die kan erg veel (iig de linux versie) misschien bied die alle beheers mogelijkheden die je wil
 
Ik ben niet bekend met Webmin, biedt deze de mogelijkheid om programmas server-side op te starten?
 
De linux variant iig wel de windows variant voor zover ik weet ook, ik heb hem alleen nog nooit zelf geprobeerd
 
Op de pagina om Webmin voor Windows te downloaden, zag ik het volgende:

3. Install the process.exe program, a command-line tool for listing and killing Windows processes.

Dat wijst er op dat Webmin ook gebruik maakt van een programma dat alle lastige taken regelt, en waarschijnlijk is dit programma hetgeen dat dan via de webinterface gestart word.

Lijkt me redelijk, en niet al te moeilijk te maken dus:

- Een webinterface
- PHP functie om het "controle programma" te kunnen starten (dat hoeft niet eens op de achtergrond, gezien dat programma een volgend programma gaat opstarten) en dat programma een aantal parameters kan doorgeven
- Een programma/batch file dat de parameters van PHP gebruikt om een ander programma te starten, een process lijst weer te geven (althans, van de programma's die belangrijk zijn in de webinterface) en processen te 'killen'.

Hoewel ik maar 1 PHP functie nodig heb, is dit blijkbaar niet het makkelijkste. Een simpele Google search op "PHP start batch" geeft me heel veel verschillende manieren om een batch file te starten, en vooral veel verbaasde reacties omdat dingen niet werken zoals je zou verwachten. Op het moment heb ik geen Windows server geïnstalleerd dus ik kan eventuele PHP functies nog niet testen....


Dit zou moeten werken, al lijkt het erop dat het al dan niet werken sterk afhangt van je server configuratie:
PHP.net - shell_exec() zei:
If you are using a Windows server with IIS, and you try to execture a batch file with shell_exec() function, or his related functions you should do it like this:

<?
shell_exec("C:\\path\\to\\cmd.exe /c C:\\batchfile.cmd");
?>

Note the parameter /c which says "Carries out the ommand specified by string and then terminates"

If you don't add the parameter /c the batch file will not be executed, only the cmd.exe file will.

As, also mentiod in these commants, put your cmd.exe file in your php folder, and your windows folder for security reasons.

Op deze manier zou je dus ook de commandos in PHP kunnen zetten, zonder externe batchfiles te gebruiken, is misschien ook handiger in combinatie met argumenten...

Hoe dan ook, bedankt voor jullie reacties, ik zal eerst eens een Windows Server opzetten om wat te testen. Mocht ik iets werkend hebben, zal ik het in dit topic posten, voor wie het kan gebruiken ;)
 
Laatst bewerkt:
Hmm, lijkt nogal moeilijk om allemaal te maken, en de resources op het net wijzen allemaal een andere richting uit.

Ik denk dat de makkelijkste oplossing toch met batch files werkt, zodat je in PHP slechts 1 functie hoeft aan te roepen. En wanneer je de mogelijkheid hebt om een screensharing programma te draaien is dat misschien nog handiger (gezien het feit dat je niet zelf nog scripts moet maken).

Hoe dan ook, ik heb geen allesomvatend antwoord gekregen, maar ik denk dat ik toch eens naar andere mogelijkheden ga kijken voor een "task manager". Ik laat het topic nog open voor het geval iemand nog suggesties heeft.
 
Ik begrijp werkelijk niets van je ambitie om zulk soort dingen met PHP op te lossen. Het is leuk om te proberen enzo, maar je hebt er toch niks aan? Qua performance zal PHP het op zulke gebieden altijd afleggen tegen andere talen die hiervoor wel geschikt zijn.
 
PHP is imo erg toegankelijk, en zou in principe genoeg kunnen om iets dergelijks mogelijk te maken. Daarbij begrijp ik niet helemaal wat je bedoeld met de performance. PHP (of wat je ook gebruikt) hoeft helemaal niet veel te doen..?
 
PHP is gewoon traag, en bovendien niet gemaakt voor wat je aan het doen bent.

Het hoeft niet bezwaarlijk te zijn, maar het betekend wel dat je oplossing altijd sub-par is.
 
@Frats: PHP traag? Voor een webinterface met een aantal knopjes om, op de server, processen op te starten? Daarbij is "bovendien niet gemaakt voor wat je aan het doen bent" ook niet van toepassing, waarvoor is PHP dan gemaakt? Voor inlog scriptjes en bezoekerstellers?

@flitsflitsflits: Omdat je dan niet zomaar overal processen kan opstarten (je moet remote desktop geinstalleerd hebben op de "besturings" computer), en als je een webinterface hebt praktisch wel overal.
 
Daarbij is "bovendien niet gemaakt voor wat je aan het doen bent" ook niet van toepassing, waarvoor is PHP dan gemaakt? Voor inlog scriptjes en bezoekerstellers?

Je weet waar PHP voor staat? Het is een recursief acroniem, dat staat voor PHP Hypertext Preprocessor.

Erg vrij vertaald naar het Nederlands: "Voorverwerker voor HTML pagina's".

Dat het niet PPTAPOYS (PHP Program To Access Processes On Your Server) heet, is niet omdat het niet uit te spreken is, gewoon omdat het daar niet voor gemaakt is. Zoals Frats al aangaf.
 
@flitsflitsflits: Omdat je dan niet zomaar overal processen kan opstarten (je moet remote desktop geinstalleerd hebben op de "besturings" computer), en als je een webinterface hebt praktisch wel overal.
Nee hoor, dat hoeft niet. Op de server kun je de remote desktop web client service (icm iis) aanzetten en dat zorgt ervoor dat je via je browser kunt inloggen op je server. Dan zie je dus de desktop in de browser.
 
In welke manier gebruik ik PHP dan noet ALS een "voorverwerker voor HTML paginas"? Proces uitvoeren, uitput eventueel valideren en HTML genereren. C++ is ook niet gemaakt on videogames mee te maken...

Zoals ik al in mijn eerste post aangaf weet ik niet of er betere oplossingen zijn, en indien ja, hoor ik het graag. Maar door alleen te zeggen dat PHP er niet voor bedoeld is kom ik niet ver.
 
Wat dacht je van inloggen met SSH (en eventueel een shellscript uitvoeren) of een C script?
 
Hmm, heb nietecht ervaring met C in online applicaties. Hoe dan ook, principe kan hetzelfde blijven als met de PHP variant en de webinterface alleen gebruiken om externe processen starten en daarmee doen wat je wilt (een ander pricess starten/stoppen bijv).

In ieder geval bedankt voor jullie reacties!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan