Excecutable op server aansturen met PHP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Ik heb een leuk concept (dat ik nog even niet ga delen O-) ) voor een webradiostation met bijbehorende website. De uitzending moet door server-side logic (PHP) kunnen worden beïnvloed.

Nou weet ik niet precies wat de beste aanpak hiervoor is. Kant-en-klare oplossingen zoals Shoutcast lijken me niet geschikt, omdat ze niet bedoeld zijn om op een server te draaien, laat staan aangestuurd te worden door PHP.

Ik zal dus vermoedelijk mijn eigen mediaplayer moeten bouwen. Een soort van .exe zonder GUI, die door PHP (via een admin login site) wordt ingeschakeld. Deze kiest dan bijvoorbeeld random liedjes en jingles uit, en smeedt die aaneen (met crossfades e.d.) tot een eindeloze stream. Die stream moet vervolgens nog naar de luisteraars worden gebracht, bijvoorbeeld met Windows Media Encoder of Flash Media Server (die laatste is helaas nogal aan de prijs) of met een eigen streaming oplossing.

Concreet zijn mijn vragen:
1. Is het mogelijk om een .exe op een server te starten en aan te sturen met PHP?
2. Is het mogelijk om de output van die .exe (continu audio signaal) voortdurend te streamen? Nog beter zou natuurlijk zijn als de .exe ook meteen een stream genereert.
3. Is dit allemaal niet veel te hoog gegrepen voor iemand die handig is met PHP maar alleen de basics weet van C++ e.d.?

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • To_Tall
  • Registratie: September 2004
  • Laatst online: 21-09 10:15
je kan geen exe aansturen. Denk ook aan mensen met een niet windows machine..

Browsers defineren EXE als een download link.. en komt automatische met wilt u di bestand downloaden.

Wat je wel zou kunnen doen is een dmv MS Media Player een plugin op te roepen. of je zou je website voledig in flash moeten schrijven die een app aanspreekt.

A Soldiers manual and a pair of boots.


Acties:
  • 0 Henk 'm!

  • H004
  • Registratie: Maart 2006
  • Laatst online: 28-05 19:55
Hij wil toch exe's aanspreken op de server, niet op de client? De browser zal alleen (bijvoorbeeld) het gestreamde mp3-bestand ontvangen.

Heb je hier wat aan? (Maar dat heb je ongetwijfeld zelf ook al gevonden)

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Ik zou dan maar eerst een media player bouwen voordat je hier aan denkt...

Maar shoutcast e.d. kunnen deze functies prima, als je het gewoon met winamp doet, kan je wel ergens een PHP plugin voor Winamp vandaan plukken.

Acties:
  • 0 Henk 'm!

Verwijderd

Doen deze functies niet wat je wil?
http://nl2.php.net/system
http://nl2.php.net/manual/en/function.shell-exec.php
http://nl2.php.net/manual/en/function.exec.php

Het lijkt me overigens vrij lastig om je eigen media-streamer te bouwen, maar met voldoende doorzettingsvermogen zal het je vast lukken

[ Voor 46% gewijzigd door Verwijderd op 29-06-2008 12:55 ]


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Megamind schreef op zondag 29 juni 2008 @ 12:48:
Ik zou dan maar eerst een media player bouwen voordat je hier aan denkt...
Dat is wel een goed punt.

Verder ken ik de exec commando's wel, maar die kun je vziw niet gebruiken om te communiceren met een draaiende exe (proces). Ik denk dat proc_open dat doet, maar ik begrijp weinig van het verhaal in de manual over pipes enzo. Ik zal eens kijken of ik daar wat tutorials over kan vinden.

Het gebruiken / schrijven van een plugin voor een bestaande mediaplayer was nog niet bij me opgekomen. Bedankt voor die suggestie, ik zal daar ook eens goed naar kijken.

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Bozozo schreef op zondag 29 juni 2008 @ 12:19:
Concreet zijn mijn vragen:
1. Is het mogelijk om een .exe op een server te starten en aan te sturen met PHP?
Ja.
2. Is het mogelijk om de output van die .exe (continu audio signaal) voortdurend te streamen? Nog beter zou natuurlijk zijn als de .exe ook meteen een stream genereert.
Ja.
3. Is dit allemaal niet veel te hoog gegrepen voor iemand die handig is met PHP maar alleen de basics weet van C++ e.d.?
Ja. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Dank je NMe. Ik zat al te wachten totdat iemand die reactie zou plaatsen :P

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Bozozo schreef op zondag 29 juni 2008 @ 12:19:
1. Is het mogelijk om een .exe op een server te starten en aan te sturen met PHP?
Ja hoor. Als je beide odnerdelen zelf maakt dan kun je zelf weten hoe je de communicatie regelt. Je zou dit via een bestandje kunnen doen of via een socket verbinding (waarbij de voorkeur naar de laatste uitgaat).
2. Is het mogelijk om de output van die .exe (continu audio signaal) voortdurend te streamen? Nog beter zou natuurlijk zijn als de .exe ook meteen een stream genereert.
Vast wel. Het grote probleem is echter niet het genereren van de stream, maar het distribueren van de stream. Dat is echter wel aan andere serversoftware uit te besteden.
3. Is dit allemaal niet veel te hoog gegrepen voor iemand die handig is met PHP maar alleen de basics weet van C++ e.d.?
Ik ben bang van wel. Gezien je vragen zou je je beter eerst met wat andere projectjes bezig te houden waarin je delen van dit probleem aanpakt voordat je dit allemaal in 1x wilt gaan doen.

Ik heb nog wel en wedervraag: Wat is het probleem met shoutcast?

Ik raad je aan hier nog eens wat meer onderzoek naar te doen. De shoutcastserver is expliciet bedoeld om op een server te draaien. Hij is gratis (itt tot enkele andere server pakketten die je noemt), heeft goede ondersteuning clientside (bijna alle computers die geluid en een verbinding met een netwerk kunnen maken kunnen een shoutcast mp3 stream afspelen) en is erg uitgebreid (ondersteund bijvoorbeeld relaying, kicken, bannen enz enz)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik zal er voor de gein toch wat dieper op ingaan. :P Ik denk dat het, binnen jouw geschetste probleemgebied, het makkelijkst is als je vanuit PHP naar een (text?)file schrijft en die weer uitleest vanuit je media-applicatie. Je hebt dan de eenvoudigst te leren variant van IPC geïmplementeerd. Je media-applicatie zou dan de stream kunnen genereren zonder tussenkomst van PHP whatsoever. :)

Mijn antwoord op je derde vraag meen ik trouwens ook. Het maken van een mediaspeler is niet zo complex, maar jij vraagt nét even iets meer dan dat. Dit kan al gauw lastiger worden dan je aankan, als je niet wat meer ervaring hebt met standalone applicaties programmeren, wat toch even een andere manier van denken is dan webapplicaties bouwen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Kijk anders eens naar Bass, een zeer sterke media DLL die je kunt gebruiken om naar Shoutcast te streamen, erg simpel in gebruik.

[ Voor 3% gewijzigd door Megamind op 29-06-2008 13:44 ]


Acties:
  • 0 Henk 'm!

  • marcieking
  • Registratie: Februari 2005
  • Niet online

marcieking

Mannetje Pug en een stokbrood

Je zou ook een (tweede) executable kunnen maken die je door middel van commandline parameters aan kunt sturen.

https://onzetaal.nl/taaladvies/welke-die/


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

marcieking schreef op zondag 29 juni 2008 @ 14:09:
Je zou ook een (tweede) executable kunnen maken die je door middel van commandline parameters aan kunt sturen.
En daar maak je het proces makkelijker mee, denk je? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • luteijn
  • Registratie: Maart 2008
  • Laatst online: 16-12-2022
Eh, het is toch doodnormaal om een programma over een control-socket, -pipe o.i.d. aan te sturen? Wat Marcieking in mijn ogen bedoelt, is dat je PHP kennis misschien te beperkt is om iets te schrijven wat rechtstreeks de 'taal' van zo'n programma spreekt, bijv omdat je die besturings-stroom constant open moet houden. Je kan dan dat tweede programma gebruiken dat aan de voorkant makkelijk interfaceet met je webpagina, en aan de achterkant de controle commando's naar e.g. vlc stuurt. Je hoeft dan geen complete mediaspeler te schrijven.

P.

Acties:
  • 0 Henk 'm!

  • JochemK
  • Registratie: Maart 2003
  • Laatst online: 20-09 15:34
Zoek eens naar RPC en dan met name XML-RPC, is de voorganger van SOAP, en daarmee kun je uitstekend vanuit php je applicatie beinvloeden.

Je roept vanuit je php eigenlijk rechtstreeks een functie aan in je applicatie, het resultaat van de functie wordt zelfs teruggestuurd, dus je kunt deze techniek zelfs gebruiken om data over te sturen.

Acties:
  • 0 Henk 'm!

  • pasz
  • Registratie: Februari 2000
  • Laatst online: 01-09 23:08
Er is 1 zeer groot gevaar van het gebruik van executables vanuit een web-omgeving. Je kan meerdere gebruikers hebben. Dus als je PHP code iedere keer een .exe aanslingert, kan het erg druk worden op je server. En dan heb ik het nog niet eens over gedeelde resources die makkelijk 'deadlocks' kunnen veroorzaken.

woei!


Acties:
  • 0 Henk 'm!

  • xtra
  • Registratie: November 2001
  • Laatst online: 21-09 13:44
Volgens mij kan de Windows Media Encoder (bijna) precies wat jij wilt. Via code playlists aanpassen etc., en op de achtergrond draaien.

Je zit dan wel vast aan Windows (maar met die exe had ik dat idee al) en aan een server waarop je zelf software kunt installeren/draaien.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

luteijn schreef op zondag 29 juni 2008 @ 22:01:
Eh, het is toch doodnormaal om een programma over een control-socket, -pipe o.i.d. aan te sturen? Wat Marcieking in mijn ogen bedoelt, is dat je PHP kennis misschien te beperkt is om iets te schrijven wat rechtstreeks de 'taal' van zo'n programma spreekt, bijv omdat je die besturings-stroom constant open moet houden. Je kan dan dat tweede programma gebruiken dat aan de voorkant makkelijk interfaceet met je webpagina, en aan de achterkant de controle commando's naar e.g. vlc stuurt. Je hoeft dan geen complete mediaspeler te schrijven.

P.
De topicstarter geeft toch aan dat hij weinig kennis van C++ heeft? Ik neem aan dat hij daarmee bedoelt weinig ervaring te hebben met applicaties programmeren in het algemeen. Bovendien blijft het een extra stap die het proces in de eerste instantie alleen maar moeilijk maakt, zonder per definitie het gestelde probleem op te lossen.
pasz schreef op zondag 29 juni 2008 @ 23:30:
Er is 1 zeer groot gevaar van het gebruik van executables vanuit een web-omgeving. Je kan meerdere gebruikers hebben. Dus als je PHP code iedere keer een .exe aanslingert, kan het erg druk worden op je server. En dan heb ik het nog niet eens over gedeelde resources die makkelijk 'deadlocks' kunnen veroorzaken.
Beter lezen. Hij wil één keer een exe opstarten en daar vanuit PHP mee communiceren, en niet duizend keer dezelfde file opstarten. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Dat XMLRPC lijkt mij meer een format voor de communicatie dan een manier op de communicatie op te zetten.

Ik test hier op een Windows machine (xampp), maar de uiteindelijke server draait Linux. Aan Windows vastzitten is dus niet echt een optie.

Dat .exe's meteen een Windows app veronderstellen wist ik niet eens. Mijn kennis op dit gebied is echt beperkt; ik kom met C++ niet verder dan zwarte venstertjes met input -> output. Maar alles valt te leren :)

Communiceren via een text-file is een optie (periodiek schrijven / pollen), maar via een socket (nogmaals, hier moet ik me nog in verdiepen) lijkt mij netter?

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Heb je nu al naar shoutcast server gekeken?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Ik vind de documentatie van ShoutCast nogal karig. Als ik het goed lees moet ik Winamp installeren op de (linux) server, dan de Unix versie van de DSP plugin installeren en starten, en dan zoiets gaan toepassen.

Ik vind het idee van een eigen app schrijven eigenlijk leuker. Ik zit niet aan deadlines vast oid, en ik wilde me toch altijd al eens verdiepen in C++. Dan kan ik bovendien een player maken die precies aan mijn behoeftes voldoet.

Of het gaat lukken is een tweede, maar het lijkt me iig leuk om te proberen :+

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Het punt is dat de shoutcast server alvast een heleboel voor je afhandeld. Hoe je de input regelt is weer wat anders, dat kan inderdaad met winamp en die hoeft niet eens op dezelfde server te draaien. Daarnaast zijn er volgens mij wel meer tools die een audiostream op kunnen leveren voor shoutcast.

Het punt is dat shoutcast gebruiken waarschijnlijk een heel stuk simpeler is dan zelf een dergelijke tool schrijven. Als je vervolgens nu al moeite hebt met het lezen van deze handleiding (nofi!) dan wordt het zelf implementeren van een mediaserver waarschijnlijk nog wel erg lastig.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
ShoutCast gebruiken voor het streamen is waarschijnlijk wel een goed idee. Ik moet dus:
1. Een C++ media player schrijven
2. Die aansturen met PHP (via proc functies)
3. De output met ShoutCast naar de gebruikers streamen.

Ik denk dat ik daarmee wel genoeg kan Googelen om verder te komen. Ik zit nog een beetje met het windows / unix probleem, aangezien ik niet kan testen op de server (kan geen vastlopers riskeren). Ik begin wel gewoon met Windows en dan pas ik de boel later aan voor Unix.

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Ik zou zowiezo inderdaad gewoon shoutcast gebruiken en een app schrijven die daarnaartoe streamed.

Beter is zelfs IceCast als alternatief.

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
Bozozo schreef op maandag 30 juni 2008 @ 11:39:
ShoutCast gebruiken voor het streamen is waarschijnlijk wel een goed idee. Ik moet dus:
1. Een C++ media player schrijven
2. Die aansturen met PHP (via proc functies)
3. De output met ShoutCast naar de gebruikers streamen.
Als je niet per se linux moet gebruiken kun je doen wat ik ooit eens voor de grap gebouwd heb:

1. Men neme winamp.
2. Copy-paste WAcommand naar je server.
3. Roep WAcommand aan met de juiste parameters - hiermee kun je onder andere de playlist bewerken, pauzeren, stoppen, etc etc. Note: er is ook de optie /clear, ookal staat'ie niet in de command list, om alle playlist entries te verwijderen.
4. ???
5. PROFIT

WAcommand kun je eventueel middels PsExec ook vanaf een andere machine aanroepen om het echt leuk te maken: ik heb lokaal een windows domain. Op m'n server draait een PHP script, op m'n workstation winamp. Als ik naar een (interne) site ga kan ik door een (zelf gegenereerde) SQL database zoeken naar nummers, die toevoegen en afspelen - met als gevolg dat m'n workstation ineens andere muziek begint te draaien. Combineer dit met een iPod Touch en je hebt een hele omslachtige manier om je iPod als afstandsbediening te laten dienen :+

Daarna is het natuurlijk een eitje om in winamp cross-track fading aan te zetten en een plugin te pakken die de output streamed naar een Shoutcast server :)

[ Voor 3% gewijzigd door FragFrog op 30-06-2008 16:32 ]

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • JochemK
  • Registratie: Maart 2003
  • Laatst online: 20-09 15:34
Bozozo schreef op maandag 30 juni 2008 @ 07:39:
Dat XMLRPC lijkt mij meer een format voor de communicatie dan een manier op de communicatie op te zetten.

Ik test hier op een Windows machine (xampp), maar de uiteindelijke server draait Linux. Aan Windows vastzitten is dus niet echt een optie.

Dat .exe's meteen een Windows app veronderstellen wist ik niet eens. Mijn kennis op dit gebied is echt beperkt; ik kom met C++ niet verder dan zwarte venstertjes met input -> output. Maar alles valt te leren :)

Communiceren via een text-file is een optie (periodiek schrijven / pollen), maar via een socket (nogmaals, hier moet ik me nog in verdiepen) lijkt mij netter?
Hmm, toch werkt het hier zoals ik eerder al beschreef ;)

Acties:
  • 0 Henk 'm!

  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 21:52
Misschien past ook MusicPD wel in dit straatje. Dan is het music management gedeelte afgehandeld, heb je alleen een nieuw frontend in PHP nodig.

Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Ik heb nu een beeld van hoe de communicatie kan verlopen, maar ik kom er niet helemaal uit. Na wat leeswerk heb ik deze (pseudo)code bedacht:

PHP: startplayer.php
1
2
3
<?php
exec('player.exe');
?>


PHP: talktoplayer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);

$process = proc_open('player.exe', $descriptorspec, $pipes);

if (is_resource($process)) {
    //write to pipe 0
    fwrite($pipes[0], 'myparam');
    fclose($pipes[0]);

    //read from pipe 1
    $result = fread($pipes[1],1024);
    fclose($pipes[1]);

    $return_value = proc_close($process);
}
?>


C++: player.exe
1
2
3
4
5
6
while(true) {
    //poll for incoming commands
    if (incoming command) {
        return command_handler(incoming_command);
    }
}


Ik denk alleen niet dat 'player.exe' in regel 8 van talktoplayer.php klopt. Wat is het 'pad' naar een draaiend process?

Verder zou ik niet weten hoe de C++ code eruit zo komen te zien. Hoe komt het commando binnen?

EDIT: na nog wat leeswerk heb ik gevonden dat:
1. de proc_ functies niet werken onder Windows (bron)
2. de proc_open gewoon een nieuw process start, en niet kan communiceren met lopende processen.

Volgens mij kan ik me beter verdiepen in de C++ kant.

[ Voor 12% gewijzigd door Bozozo op 01-07-2008 14:06 ]

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

..

[ Voor 98% gewijzigd door ? ? op 25-01-2013 09:51 ]


Acties:
  • 0 Henk 'm!

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 15-07 15:35

leuk_he

1. Controleer de kabel!

Bozozo schreef op dinsdag 01 juli 2008 @ 12:33:
Volgens mij kan ik me beter verdiepen in de C++ kant.
Zoals eerder gezegd zul je een vrom van interprocess communicatie moeten implementeren.

php lijkt wel wat te kennen:
http://us3.php.net/sem

C/(C++) kent deze ook, al zullen de calls op windows iets anders zijn dan op unix/linux

Uiteraard zul je je meerdere player.exe processen hebben lopen (of 1 multithreaded versie hiervan) en zul je ook een manier moeten verzinnen om een sessie nummer door te geven aan de player.exe.

Over ipc is wel het een en ander te vinden. lees je daar maar eens over in.


Andere opties om ipc te bereieken zijn inderdaad een pipe (je zult een specifieke named pipe moeten maken voor elke player.exe) of tcp/ip (player.exe listened op een poort om commandos af te handelen. )

[ Voor 19% gewijzigd door leuk_he op 01-07-2008 14:36 ]

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Nee, ze kunnen alleen de playlist beinvloeden, niet het huidige nummer.

De database in de gaten houden met de music player app is waarschijnlijk inderdaad de beste optie.

Ik begin echter steeds meer te voelen voor de hier gesuggereerde WACommand oplossing. Gewoon steeds de meest recente playlist (voor de komende paar uur) met WACommand naar winamp sturen, en met ShoutCast streamen.

Maar dat werkt dan waarschijnlijk weer niet onder Unix :|




edit @hierboven: er is in principe maar 1 player.exe. Alle luisteraars krijgen gewoon dezelfde stream.

Met pipes gaat het volgens mij niet lukken. player.exe moet namelijk voortdurend draaien, en PHP moet maar af en toe commando's geven. Voor zover ik zie kun je pipes openen naar een al draaiend proces.

De term IPC was ik nog niet tegengekomen, daar zal ik eens naar kijken.

[ Voor 30% gewijzigd door Bozozo op 01-07-2008 15:20 ]

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • JochemK
  • Registratie: Maart 2003
  • Laatst online: 20-09 15:34

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

*kuch*
-NMe- schreef op zondag 29 juni 2008 @ 13:31:
[..] Je hebt dan de eenvoudigst te leren variant van IPC geïmplementeerd. [..]
*kuch*

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Als dit topic dan toch omhoog is geschopt stel ik meteen nog een vraag :P

Je kunt programma's eenvoudi command line parameters meegeven. Bij winamp kun je ook winamp.exe -play oid opgeven. Winamp wordt dan gestart met die optie. Als Winamp al draait, dan wordt de optie uitgevoerd binnen de lopende applicatie.

Hoe kun je dat bereiken? Is er specifieke manier om na startup nog te luisteren naar zoiets, of past Winamp gewoon een trucje toe (als in, bij startup controleren of Winamp al draait. Als dat zo is, stuur command line parameters door naar die instance van Winamp met IPC en exit)?

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Dat laatste is inderdaad wat Winamp doet.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • JochemK
  • Registratie: Maart 2003
  • Laatst online: 20-09 15:34
Ik denk ik breng het nog maar even onder z'n aandacht want:
Bozozo schreef op dinsdag 01 juli 2008 @ 14:38:
De term IPC was ik nog niet tegengekomen, daar zal ik eens naar kijken.

Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Ja, ik ben er inmiddels mee bezig. Ik ga toch proberen om de communicatie tot stand te brengen, omdat ik anders MySQL met C++ moet gebruiken. Ik wil liever dat de mediaplayer gewoon een 'next track' input heeft, die een filename accepteert. Dat is een stuk flexibeler dan vastzitten aan MySQL.

Ik ga de IPC met sockets doen. PHP heeft socket functies; dat moet wel lukken. Momenteel heb ik ruzie met de C++ kant van de socket. Ik heb wel wat tutorials gevonden over sockets, maar die krijg ik niet aan de praat. Voor PHP ken ik inmiddels genoeg goede referenties om problemen snel op te lossen, maar met C++ ligt dat heel anders. Met Google vind ik veel oplossingen die niet meer werken of die niet werken met mijn compiler (VC++ 2008).

Als iemand een goede socket tutorial weer dan hoor ik het graag. In eerste instantie werk ik op Windows, maar uiteindelijk moet er ook een Unix versie gaan komen. Dat is dus weer dubbel werk :|

edit: deze ziet er veelbelovend uit.

edit2: het is gelukt! Met de bovenstaande link en wat geduld :)

[ Voor 8% gewijzigd door Bozozo op 03-07-2008 20:25 ]

TabCinema : NiftySplit

Pagina: 1