Permalänk
Medlem

Problem med php system()

Skulle behöva lite hjälp med en sak. Vill starta ett program med system("") men det krånglar för mig.

<?php system("C:\\Program\\CoreCodec\\TheCoreMediaPlayer\\coreplayer.exe"); ?>

Vad som händer är att programmet startar men webbfönstret låser sig och förmodligen väntar det på någon slags returvärde? Gör jag samma sak med t.ex. notepad så startar notepad utan att låsa webbfönstret.

Tilläggas skall att jag är rätt grön på PHP men jag behöver bara denna enkla funktion. Finns det något sätt att skippa returvärdet?

vh
/RT

Permalänk
Inaktiv

Här kan du läsa om funktionen system:
http://se.php.net/manual/sv/function.system.php

Permalänk
Medlem

Har redan läst informationen under den länken. Har även kollat på devshed och andra programmeringsforum men antingen så är jag blind eller så hittar jag ingen som har det "problemet".

Permalänk
Medlem

Funkar exec()?

Visa signatur

Äntligen har jag fått svar på om vandrande pinnar kan gäspa. Det kan de inte. Ett av världens stora mysterier är löst.

Permalänk
Medlem

Problemet kan vara att du använder escape-tecknet (\). Använd \\ eller / så borde det funka. Alltså "C:\\Program\\bleh\\etc". Annars kan problemet vara att du använder långa filnamn (8.3-namn kanske bara tillåts på din dator).

Returvärde får du vare sig du vill eller inte. Men såvida du inte gör något med det behöver du inte bry dig om det, då det inte spelar någon roll.

Visa signatur

:€

Permalänk
Medlem

"C:\Windows\notepad.exe" är väl oxo för långt isåfall, och bör hänga fönstret? Eller hur långa namn får man ha? Är det inte 8 tecken?

Visa signatur

Äntligen har jag fått svar på om vandrande pinnar kan gäspa. Det kan de inte. Ett av världens stora mysterier är löst.

Permalänk
Medlem

filigran: Nä, det går. Hela sökvägen får vara 255 tecken har jag för mig. Men filer och kataloger får inte vara längre än åtta bokstäver undantaget ändelsen, som får vara tre. Det går fortfarande om det är längre än så, men då får man mecka lite med det. "Program Files" blir "Progra~1", t ex.

Visa signatur

:€

Permalänk
Medlem

kan det inte vara så att system() väntar på output från programmet som startades, och fryser därför browsern av någon anledning.. testa köra nått dos-kommando och se om du får samma effekt.. typ ipconfig eller dyl..

Visa signatur

Cogito ergo sum

Permalänk
Medlem

Sedan borde du nog testa att skriva ut resultatet. Då får du se om det blivit något fel eller så.

echo system("ping 127.0.0.1");

Visa signatur

:€

Permalänk
Medlem

Har gjort lite tester nu:

Det är inte fel på filnamnet eller mappstrukturen. Testade så långt att jag t.om. installerade programmen i rooten.

Att köra med echo gav ingen output.

Problemet handlar om att PHP/browsern väntar på något. Testade med denna kod:

<?php system("C:\\TheCMP\\cp.exe"); echo "hello world"; ?>

Browsern väntar tills jag stänger ned programmet (coreplayer) för att sedan hoppa till raden som skriver ut "hello world".

Kollade lite i loggarna och fann detta:

[error] PHP Fatal error: Maximum execution time of 30 seconds exceeded in c:\apache\htdocs\index.php on line 12

Vilket tyder på att den väntar på att något skall slutföras.

GAHHHHH!! Just när jag sitter och skriver detta får jag för mig att testa att köra winamp och då fungerar skiten? Testar det igen och då fungerar det inte..

Vanliga program som t.ex. notepad, wmplayer och calc fungerar utan problem.

Någon som har lust att testa på sin egen burk om de kan få koden ovan att fungera? Byt ut mitt prog mot winamp.

/RT som börjar ge upp nu. Kanske enklare med ASP?

EDIT: forumet verkar trunkera lite tecken. I min första post skulle det egentligen vara \\ i sökvägen. Har testat med både enkla och dubbla \-tecken.

Permalänk
Medlem

RT: Winamp gör så :-/. Du får samma effekt om du försöker köra det från konsolen. Det är alltså inte PHPs fel. Vet inte riktigt hur man ska göra för att tråda det. Hade du kört linux/unix hade du kunnat slänga på en & på slutet.

Försök hitta command line options till Winamp eller vilket annat program det nu är du vill köra. Om du löser det, posta här; vill själv veta hur man gör.

Visa signatur

:€

Permalänk
Medlem

undra om du kan exekvera det genom en batchfil, och på så sätt få det att hamna i bakgrunden

typ

winampexec.bat @echo off c:\program files\winamp\winamp.exe

sen kör du system(c:\winampexec.bat) eller var du nu har den,

kan vara värt ett försök iaf

Visa signatur

Cogito ergo sum

Permalänk
Medlem

batchfilen kommer ju inte avslutas, så det borde bli samma effekt.

Visa signatur

:€

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av eighty
RT: Winamp gör så :-/. Du får samma effekt om du försöker köra det från konsolen. Det är alltså inte PHPs fel. Vet inte riktigt hur man ska göra för att tråda det. Hade du kört linux/unix hade du kunnat slänga på en & på slutet.

Försök hitta command line options till Winamp eller vilket annat program det nu är du vill köra. Om du löser det, posta här; vill själv veta hur man gör.

Hehe.. hos mig kan jag köra winamp från konsollen utan att konsollen låser sig. När jag precis installerat winamp fungerade det inte men nu går det? Problemet som uppkommer när man exekverar genom PHP kvarstår dock. Kan ha att göra med "miljövariabler".

Att köra batchfiler ger samma problem :/

Såg på php.net att det var enklast om man körde linux/*BSD så jag kanske gör så.. snacka om effektiv lösning

Orkar inte hålla på mer med detta eg. Sätter mig nog och pillar med min PXE-bootserver istället..

Tack för hjälpen

/RT

Permalänk
Medlem

En bra anledning till att lära dig *nix. (inte för att det behövs någon anledning egentligen men.. )

Visa signatur

Äntligen har jag fått svar på om vandrande pinnar kan gäspa. Det kan de inte. Ett av världens stora mysterier är löst.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av filigran
En bra anledning till att lära dig *nix. (inte för att det behövs någon anledning egentligen men.. )

Saken är att jag gav upp *nix för något år sedan.. Drar nog in FreeBSD under natten så får vi se. Om inte annat så kanske jag kan lösa mina PXE-bootproblem med BSD istället..

Permalänk
Medlem

Gör om, gör rätt.

Funkade inte exec(), om man ska bli lite OnT, eller beter det sig på samma sätt som system()? Enda skillnaden kanske är att exec() ger output(eller är det tvärtom?).

Visa signatur

Äntligen har jag fått svar på om vandrande pinnar kan gäspa. Det kan de inte. Ett av världens stora mysterier är löst.

Permalänk
Medlem

RT: Det kanske vore lättare att bara byta språk istället för att byta operativsystem?

filigran: Jag testade. När jag använde exec startade inte programmet alls. :-/ Skillnaden mellan system och exec ska vara att system ger output, exec inte.

Visa signatur

:€

Permalänk
Medlem

Frågade på IRC:

23:54 +|| Trancer : filigran: probly because the program doesnt stop 23:54 + | Trancer : he needs to fork it into the background which is ehm.. hard with windows 23:54 + | Trancer : check the popen() crap 23:55 + | Trancer : but I wonder if you can totally fork with it on win32

Så kolla popen(), det kan ju funka.

Visa signatur

Äntligen har jag fått svar på om vandrande pinnar kan gäspa. Det kan de inte. Ett av världens stora mysterier är löst.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av filigran
Frågade på IRC:

23:54 +|| Trancer : filigran: probly because the program doesnt stop 23:54 + | Trancer : he needs to fork it into the background which is ehm.. hard with windows 23:54 + | Trancer : check the popen() crap 23:55 + | Trancer : but I wonder if you can totally fork with it on win32

Så kolla popen(), det kan ju funka.

Hehe.. kan kolla upp det imorrn. Sitter och pillar med min ohjälpligt bökiga DNS..

/RT

PS. Fördelen med *BSD är att det finns mängder av gratis mediaspelare som fungerar klockrent till skillnad från windowsskräpet. Har dock tråkiga minnen av att implementera PHP-stöd i Apache under *nix.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av RT
PS. Fördelen med *BSD är att det finns mängder av gratis mediaspelare som fungerar klockrent till skillnad från windowsskräpet. Har dock tråkiga minnen av att implementera PHP-stöd i Apache under *nix.

Annars kan du väl använda XMMS i Windows?

Visa signatur

:€

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av eighty
Annars kan du väl använda XMMS i Windows?

Finns XMMS för win32?

Fast å andra sidan tror jag det blir samma problem då.. skall tanka ned FreeBSD-releasen idag så får vi se.

Permalänk
Medlem

Inga problem att fixa php i apache. Särskilt inte under freebsd.

Visa signatur

Äntligen har jag fått svar på om vandrande pinnar kan gäspa. Det kan de inte. Ett av världens stora mysterier är löst.

Permalänk
Medlem

Har tankat ned FreeBSD nu men har prov imorrn och två arbeten att göra först så jag lägger det på is ett tag..