JSON-RPC API ist performant - weitreichend umfangreich - und einfach handelbar - nur!!! - wenn das Gegenueber nicht erreichbar ist finde ich keine Moeglichkeit das solide abzufangen.
ein Vorabcheck mit positiv Sys_GetURLContentEx kann zumind. als Lebenszeichen gewertet werden - und bei negativ faellt die Fehlermeldung als Warning: Connect timed out. rel. moderat aus!
Du kannst bis dahin meine API Wrapperklasse nutzen, die kann das schon von Anfang an. Im Konstruktor als 4. Parameter (hinter dem Password) ein True übergeben, dann wirft sie auch Exceptions oder die Error Variable abfragen
06.01.16 10:45:29 | ScriptEngine | Result for Script 58103
<br />
<b>Warning</b>: file_get_contents(http://192.168.0.6:80/api/): failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized
in <b>/etc/symcon/scripts/__rpc.inc.php</b> on line <b>89</b><br />
Server Problem: Unable to connect
Also das komplette Programm mit Lizenz und Passwort; sieht bei mir so aus (weil ich die Daten in einem Array habe):
06.01.16 11:03:32 | ScriptEngine | Result for Script 58103
D:\IPS-Steigerts\
Die kann ich sicher irgendwie abfangen und dem Skript melden, dass alles i.O. ist und es weiterlaufen kann.
Nur wenn der andere PC nicht erreichbar ist, hab ich wieder das Gedöns im Log:
06.01.16 11:09:02 | ScriptEngine | Result for Script 58103
<br />
<b>Warning</b>: file_get_contents(http://192.168.0.5:80/api/): failed to open stream: No route to host in <b>/etc/symcon/scripts/__rpc.inc.php</b> on line <b>89</b><br />
Server Problem: Unable to connect
zwar nicht so umfangreich, aber es ist wieder eine unnötiger Log-Eintrag.
Gibt es da eine Abhilfe?
Viele Grüsse
Harald
PS: den Hinweis auf „JSON API Wrapper für Perl und PHP“ habe ich gelesen, da fehlt mir aber schon beim Titel das Verständnis, was ein „Wrapper“ ist
wenn Du die echo Befehle raus nimmst oder durch $var= ersetzt, gibt es auch keine Eintrage im Log. Allerdings weißt Du dann auch nicht mehr, woran es hakt.
Ein Wrapper ist ein Set von Funktionen, der auf vorhandene Funktionen aufbaut und ggfls. anders bereitstellt und/oder. inhaltlich ergänzt.