Hallo Martin,
ich habe mal an deiner Klasse weiter herrumprobiert und versucht einen Inquiry auf die OK-Meldung zu senden. Ich habe zum Testen eine neue Klasse erstellt welche von der "monitrd_php_client" erbt.
Das Problem ist nun das monitord, soweit ich das sehe die Eingabe garnicht verarbeitet.
Laut SocketServer.cpp Zeile 721 müsste normalerweise im Log "Socket reports read event" erscheinen, es passiert aber nichts. Auch nicht die Debugausgaben aus der SocketThreadMonitord.cpp werden ausgegeben. (Das Loglevel in der Konfiguration ist auch auf DEBUG eingestellt.)
Woran könnte hier das Problem sein das der Befehle nicht ausgeführt wird bzw. garnicht erkannt wird?
FMS sowie ZVEI Meldungen werden ohne Problem vom Script empfangen und ausgegeben.
Ausgabe der Konsole beim Aufruf des Scripts:
Code:
monitord PHP Client v0.1 started
INFO: Socket created.
INFO: Trying to connect 192.168.*.* ...
INFO: Socket connected.
INFO: UNKNOWN received, dumping:
string(27) "100;monitord 2.0svn READY
"
Es wurden 5 Bytes geschrieben
Logeinträge:
Code:
13:15:38.382 INFO: monitord/Monitor.cpp(147) monitord socketserver started
13:15:38.386 INFO: monitord/Monitor.cpp(153) fms32pro socketserver started
13:15:38.390 INFO: monitord/Monitor.cpp(158) crusader socketserver started
...
16:24:17.457 INFO: monitord/SocketServer.cpp(271) new connection from 192.168.*.*
16:24:17.460 INFO: monitord/SocketServer.cpp(677) login authentication (ip allowed): 192.168.*.*
Code:
class test_monitord_php_client extends monitord_php_client{
function __construct($host='localhost', $port='9333') {
$this->debug = true;
parent::__construct($host, $port);
}
function monitord_work_unknown($monitord_line) {
echo "INFO: UNKNOWN received, dumping:\n";
var_dump($monitord_line);
echo "\n";
/**
* Prüfung ob OK empfangen wurde
*/
if(strpos($monitord_line, ";") !== false){
$monitord_line = explode(';', $monitord_line);
if($monitord_line['0'] == '100') {
sleep(2);
$cmd = "210\r\n";
$write = socket_write($this->socket, $cmd, strlen($cmd));
echo "Es wurden " . $write . " Bytes geschrieben";
echo "\n";
$errorcode = socket_last_error($this->socket);
if($errorcode != 0 && $this->debug){
echo "DEBUG: errorcode was $this->errorcode ( " . socket_strerror($errorcode) . " )-- out was ";
var_dump($out);
}
}
}
}
}
Gruß
Daniel