Planet Peer - The anonymous networking community
July 29, 2010, 11:36:31 PM *
Welcome, Guest. Please login or register.

Login with username, password and session length
 
News: Planet Peer - The anonymous networking community
...because anonymity is better ;-)
 
   Home   Help Search Calendar Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: Wer kennt sich mit PHP/C aus?  (Read 714 times)
0 Members and 1 Guest are viewing this topic.
Markus
Administrator
Elite
*****

Karma: +24/-8
Offline Offline

Posts: 5673



View Profile WWW
« on: June 15, 2009, 09:13:58 AM »

Eine Bekannte von mir sucht nach einer Lösung für folgendes Problem:

--- snip ---

Ich suche gerade eine Lösung, um von Webtechnologien auf ein eine
Schnittstelle, die in C geschrieben ist, zugreifen zu müssen. Bisherige
Idee war, die eingebauten Funktionen (exec(), passthru(), ...) von PHP
zu nutzen, um C-Programme auf dem System aufzurufen. Tja ... nur wie
gibt man da ganze Objekte an PHP zurück?! Alles was mit printf()
ausgegeben wird, kann in einem Array an PHP zurückgegeben werden. Ist
allerdings etwas umständlich ...

Hat von euch jemand schon mal so etwas versucht: mit PHP C-Code aufrufen
und Daten an PHP zurückgeben? Oder hat jemand einen heißen Tipp? ;o)

--- /snip ---

Wenn jemand Infos hat, dann nur her damit...Grin
Logged



Cheers,
Markus
Nemo
Global Moderator
Elite
*****

Karma: +27/-0
Offline Offline

Posts: 1284


View Profile
« Reply #1 on: June 15, 2009, 01:38:10 PM »

Ich hatte vor einiger Zeit mit PHP und C zu tun, jedoch nicht kombiniert. Deshalb nur ein paar Tipps von verschiedenen Webseiten:

Soll bei jedem PHP-Scriptaufruf das externe Programm neu gestartet, dann kurz Daten ausgetauscht, an den Browser geschickt und dann Programm und Script beendet werden? Das Script beendet erst, wenn das externe Programm geschlossen wird (oder durch Script-Timeout). Da kann man Stdin/Stdout als Kommunikation zum Programm nutzen, keine Ahnung bezüglich Vereinfachung Datenformat.
http://www.php.net/manual/de/function.system.php
http://www.php.net/manual/de/function.passthru.php


Bei Asynchronem Start läuft das externe Programm im Hintergrund weiter (dabei sei das PHP-Speicherlimit zu beachten), bei Neustart des Webservers könne das externe Programm ebenfalls beendet werden. Hier steht etwas zu diesem Thema (externes Programm als Daemon):
http://www.experts-exchange.com/Programming/Languages/CPP/Q_23214463.html

Als IPC zur Kommunikation zwischen dem kurzlebigen PHP-Script und dem im Hintergrund arbeitenden Daemon könnten Sockets genutzt werden, z.B. TCP oder UNIX-Sockets:
http://ch2.php.net/manual/de/function.socket-create.php
(da müsste man sich sicherlich ebenfalls selber um das Datenformat kümmern?!? Oder könnte da PHP über den Socket auch strukturierte XML-Daten entgegennehmen?)

Interessanterweise kann man in PHP sogar persistente Sockets öffnen: http://ch2.php.net/pfsockopen
So könnte der Daemon so realisiert werden, dass er nur eine TCP-Verbindung akzeptiert und somit kein Durcheinander beim Zugriff auf die Schnittstelle entsteht (geht vielleicht bei den UNIX-Sockets auch). Ich weiss jedoch nicht, wie man den Filepointer auf diesen Socket an andere Scriptinstanzen weitergeben kann. Denn dieser Socket bleibt ja dann geöffnet, obwohl das Script beendet wurde.


Falls es mit PHP/CGI oder was auch immer nicht geht, so müsste halt das Daemon-Programm einen minimalistischen Webserver haben, der HTTP1.0 versteht und so direkt per Browser angesteuert werden kann. Dies ist zwar eine Neuerfindung des Rades, kann dafür auch ohne weiteres auf einem Embedded System laufen (ohne Apache oder sonstigen ressourcenlastigen Webserver).


Just my two cents. Leider keine spezifischere Infos. Übrigens finde ich es gut, dass es eine "Bekannte" ist, denn es gibt in der Informatik sowieso zu wenig Frauen (man glaubt es kaum, in drei Jahren hatte ich einmal das Vergnügen mit einer LON-Spezialistin von Siemens)...

MfG,
Nemo.
Logged
rb2k
Advanced
***

Karma: +3/-0
Offline Offline

Posts: 295


View Profile
« Reply #2 on: June 15, 2009, 03:18:24 PM »

Einigermassen professionell geht es mit thrift: http://incubator.apache.org/thrift/
Logged
Planet Peer - The anonymous networking community
   

 Logged
Pages: [1]   Go Up
  Print  
 
Jump to:  


Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!