Hello,
Es fehlt nun eigentlich noch die Bestimmung der PID. Die solltest Du nicht unter den Tisch kehren, sondern säuberlichst in eine Tabelle eintragen (mit Startzeitpunkt, usw.)
Das verstehe ich leider nicht ganz. Könntest du diesen Schritt näher erklären? Welche Tabelle meinst du hier? Du Prozesstabelle von Linux???! Aber dort wird doch automatisch ein Eintrag erstellt?!
Solange Du dir die PID nicht merkst, kannst Du nicht gezielt mit dem Prozess kommunizieren.
Wiso soll ich die gezielt abwürgen?
Mein Programm beendet sich auf jeden Fall selbst.
Das ist bei keinem Programm wirklich sichergestellt.
Eine falsch programmierte Schleife, und es läuft ewig.
Dann fiel mir noch ein:
In welchem Arbeitsverzeichnis wird Dein Programm durch Exec überhaupt aufgerufen? Vielleicht liegt da der Hase im Pfeffer?
also das Programm selbst liegt im /etc/local/Programmname/ verzeichnis und im DocumentRoot des Apache/PHP, eben das Skriptverzeichnis, liegt ein Hardlink auf mein Programm.
Wie kann den hier der Fehler liegen?
Hast Du das Programm schon mal auf der Konsole aus einem anderen Verzeichnis als dem eigenen aufgerufen, und geschaut, was passiert? Wenn das Verzeichnis nun nicht für Dein Programm beschreibbar ist, was geschieht dann?
Da hier diverse Unstetigkeiten vorliegen, sind die Freiheitsgrade zu groß, um Ferndiagnose vornehmen zu können.
Versuch mal, das Programm so zu starten, wie es juha vorgeschlagen hat, übernimm die PID, lass Dein PHP-Programm hinterher in eine Schleife laufen (lass es immer 500ms schlafen) und den Zustand des Prozesses mit der PID ausgeben (ggf. in eine Datei).
Sorge dafür, dass dieses Script abbricht, wenn der Browser die Seite verlässt (on User abort)
Schau Dir die POSIX-Funktionen dazu an; die beiten eine Menge von Kontrollmöglichkeiten aus PHP heraus.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
