Hallo Leute, wie richte ich unter Xampp einen Daemon ein? Er soll, wenn auf Port 10000 ne TCP Verbindung anfragt, ausgelöst werden und ein PHP Script ausführen. Danke für alle Infos.
Hallo, habe den Wiport jetzt schon am laufen. Leider wird die TCP Verbindung dauerhaft ausgeführt. Aber warum? Ich baue eine TCP Verbindung zum Server an PORT X auf. Nun stoße ich den Daemon, welcher an der ein PHP Script ausführt. Dadurch das die TCP Verbindung nicht geschlossen wird, wird aber das Script immer wieder ausgeführt. Wie kann ich den Socket schließen, nachdem der Daemon einmal ausgeführt wurde? Ich komme einfach nicht weiter... Ich bin dankbar für jeden Tipp. Bye Patti
Suchst du eventuell http://de3.php.net/socket_close Was ist wiport? Ich weiß nicht was du da genau machst, aber man kann problemlos nur mit php Sockets (sowohl als Server, als auch Client) öffnen. Hier findet man einige beispiele, es gibt aber auch noch diverse Klassen dafür. http://de3.php.net/manual/de/ref.sockets.php Socket Server lässt man in PHP am besser mit der CLI (Command Line Inferface) Version laufen. Einfach die Binary Datei php(.exe) mit dem Pfad zum Script als Parameter ausführen.
Der Wiport ist ein WLAN Modul, welches serielle Daten über Wlan als HTML Seite darstellt. Die Fsockopen nutze ich schon für die Spätere Parsen Funktion. Danke
fsockopen != sockets Funktionen So wirklich schlau werde ich daraus immer noch nicht Für mich suchst du sowas: http://de3.php.net/manual/de/ref.sockets.php#43155 Der wiport ist der Client der auf den Server zugreifen soll der in der XAMPP Umgebung läuft? Man könnte sicherlich auch mit dem Apache arbeiten und dem sagen das er auf Port 10000 lauschen soll und dann immer einen bestimmten Script ausführen soll. Da du aber vermutlich keinen richtigen HTTP Request machst wird das deutlich komplizierter als eine einfache PHP Lösung. Wie hast du es den zurzeit am laufen?
Ich habe im Augenblick den Wiport und Server am laufen. Ich bau nun mit dem Wiport zu dem Server (xxx.xxx.xxx.xxx:10001) eine TCP Verbindung auf. Der Damon auf dem Server wird nun ausgelöst und führt das Script aus. Das Script versucht die Webseiteabzuparsen die auf dem Wiport angezeigt werden sollte. Nun ist aber das Problem, das der Wiport die Verbindung hält und der Wiport keine 2. Verbindung vom Server zuläst... Es ist doch verzwickt... Patti
Was läuft den als Daemon? Sobald einer der beiden Teilnehmer die Verbindung beendet ist die Verbindung tot, spätestens nach dem Timeout. Oder baut der Wiport direkt eine neue Verbindung auf? Dann scheint mir das eher ein Konfigurationproblem des Wiports zu sein.
Wie meinst du das, wer als Daemon läuft? Der Daemon läuft auf dem Server (Xampp) und der Wiport ist auch nur ein kleines Modul, welches serielle Daten per Webseite darstellt und per Wlan erreichbar ist. Also auf keinen Fall mit nem Server oder so was großem vergleichbar ist. Wie kann ich denn eine Verbindung serverseitig schließen, die der Server nichtselbstständig geöffnet hat. Gruß Patti
Meinst du in diesem Fall mit Daemon = Webserver = Apache? EDIT: Ein paar mehr Details wären vielleicht nicht schlecht, ich bin mir immer noch nicht sicher was welche Daten an was schickt, etc.
Ja, der Daemon läuft auf dem XAMPP-Server! Dieser Server wartet also auf einen eingehende Verbindung vom Wiport und soll darauf hin die vom Wiport generierte Webseite abparsen.
Ich vermute stark das es ein Konfigurationsproblem mit dem Wiport ist. Versuch's mal mit "Connection: close" im HTTP Header. Dann wird die Verbindung nach jedem Request gekillt. Ansonsten ist es erlaubt mehrere HTTP Requests über eine Verbindung zu machen. Normalerweise werden diese persistent connections aber nach 15 Sekunden Inaktivität vom Apache gekillt. Der Wiport schickt aber anscheinend kontinuierlich neue Requests... Das hat nichts mit XAMPP/Apache/Deamon, etc. zu tun, sondern nur mit dem Client, dem Wiport.
Patti wrote: > Ja, der Daemon läuft auf dem XAMPP-Server! > Dieser Server wartet also auf einen eingehende Verbindung vom Wiport und > soll darauf hin die vom Wiport generierte Webseite abparsen. Was hast du denn mit dem Wort "Daemon"? Das ist nix anderes als ein Hintergrunddienst jeglicher Art. (http://de.wikipedia.org/wiki/Daemon) Es gibt außerdem keinen XAMPP-Server. XAMPP ist eine Sammlung aus Webserver (Apache inkl. php), MySQL Datenbank und noch ein paar anderen Dingen. Für mich ist nicht so ganz erkennbar was du wirklich vorhast. Auch scheinst du nicht so ganz zu wissen, wie Client/Server Systeme aufgebaut sind (Einer horcht, ein anderer baut eine Verbindung auf)
Ich werd morgen den Wiport noch mal durchchecken...das Handbuch ist für solche Optionen allerdings sehr mager. Conection Close hatte ich auch schon ausprobiert brachte aber keinen Erfolg, leider. Gruß & schönen Abend.
@simon Vielleicht habe ich das einwenig "unpräzise" beschrieben, aber Dein Post ist ja auch nun nicht gerade hilfreich. Ich komme nun mal nicht aus der Netzwerktechnik. Ist der Wiport als Server zu sehen, wenn er die TCP Verbindung zum Server aufbaut? Ocder doch nur ein Client der einen Dienst des Severs in Anspruch nimmt? Definitv ist doch der Apache der Server und auf ihm läuft der Hintergrunddienst der "Daemon" . Dieser führt einem ihm zugeordneten Befehl aus. In meinem Fall soll er eine PHP Datei ausführen. Das tut er auch. Aber es sieht so aus als ob der Server, welcher jetzt als Client fungiert die Verbindung zum Wiport, der jetzt wiederum als Server fungiert und ein HTML -Seite zur Verfügung stellt, nicht aufbauen kann. Dazu müßte ich die bestehende TCP Verbindung von der ersten Anfrage (die den Doemon auslöst) beenden. Das ging bis jetzt leider nicht so richtig. Gruß Patti
Patti wrote: > Ist der Wiport als Server zu sehen, wenn er die TCP Verbindung zum > Server aufbaut? Nein. > Ocder doch nur ein Client der einen Dienst des Severs in > Anspruch nimmt? Ja. > Definitv ist doch der Apache der Server und auf ihm > läuft der Hintergrunddienst der "Daemon" . Dieser führt einem ihm > zugeordneten Befehl aus. In meinem Fall soll er eine PHP Datei > ausführen. Was denn für ein Daemon? Apache ist ein Daemon, der mySQL Serverdienst ist auch ein Daemon. Daemon ist nur ein Oberbegriff. > Das tut er auch. Aber es sieht so aus als ob der Server, welcher jetzt > als Client fungiert die Verbindung zum Wiport, der jetzt wiederum als > Server fungiert und ein HTML -Seite zur Verfügung stellt, nicht aufbauen > kann. Der Webserver baut zum Wiport eine Verbindung auf und stellt eine HTML-Seite zur Verfügung, die der Wiport wiederum nicht aufbauen kann? Ziemlich verstrickt deine Sache da. Irgendwie passt das nicht so richtig > Dazu müßte ich die bestehende TCP Verbindung von der ersten Anfrage (die > den Doemon auslöst) beenden. Das ging bis jetzt leider nicht so richtig. Ein Daemon reagiert eigentlich nur auf Verbindungen, und baut nicht selbstständig welche auf. (Zumindest nicht ohne eine Aufforderung von einem Client). Zumindest in der Regel ist das so. Was spricht denn dagegen den Wiport eine Verbindung zum Webserver aufzubauen, einen GET-Request zu schicken, um eine Seite anzufordern und diese dann lokal auf dem Wiport zu speichern. Jetzt kann irgendein Browser auf den Wiport zugreifen und sich diese Seite anschauen. PS: Ich glaube hier hat immernoch niemand so richtig verstanden, was du mit dem WiPort überhaupt vorhast.
Guck mal im access log (.../xampp/apache/logs/access.log) vom Apache, dann siehste auch genau was da von wo reinkommt. Wie ich das jetzt verstanden habe: Der wiport hat einen kleinen Webserver auf dem man Daten per HTML anzeigen lassen kann. Gleichzeitig kann der wiport auch als Client fungieren. Dein Apache (xampp) Server lauscht auf Port 10001 auf einen Request des wiports. Die aufgerufene PHP Datei stellt mittels fsockopen eine Verbindung zum Webserver des wiport her und holt sich die Daten ab und macht damit dann irgendwas. So könntest du z.B. irgendwie eine endlos Schleife ausführen, wenn der wiport durch das abrufen der Daten dazu veranlasst würde einen weiteren request an den Apache zu schicken. Das würde dein Problem erklären. Um das Problem zu lösen würde ich dir empfehlen die Daten die der PHP Script verarbeiten soll direkt in einem rutsch (per HTTP POST Request) vom wiport an den Script zu schicken. Das ist resourcensparender und auch weniger Fehleranfälliger da nur eine Verbindung aufgebaut wird.
Also ich hatte mit mit netstat die Verbindungen anzeigen lassen. Einige vom Wiport zum Server hatten FIN_WAIT_1 und noch eine war glaube ich mit dem Server verbunden. In der acces Log hat mir mein Admin dann gezeigt, dass der Dienst, der das PHP Script ausführt, immer wieder angestoßen wurde. Ich könnte morgen die Meldungen genau posten. Das mit HTTP Post Request geht leider nicht (bzw. ich wüste nicht wie). Ich kann zB. kein Get oder Post benutzen, da ich ja die Daten nicht schicken kann. Aber ich bin auch nicht so tief in der Materie (Server & Protokolle) :-) . Gruß Patti
Hmm, jo ok, wenn die Daten zum Zeitpunkt des Anstoßens nicht verfügbar (Wo kommen die den her???) sind dann musst du wohl deine hin und her Methode benutzen. Dann musst du nur feststellen was die andauernden requests verursacht ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.