==== Test von PHP-Skripten ==== Soll in einem PHP-Skript nach Fehlern gesucht werden, benötigt der %%PHP-Debugger%% eine JSON-Datei mit ein paar Angaben zum zu testenden Skript. Diese JSON-Datei muss in einem Unterordner mit dem Namen ''(sp).vscode(sp)'' liegen. Für den Einsatz von //Visual Studio Code// (kurz //VS Code//) mit (c4p) ist der Inhalt der JSON-Datei sehr überschaubar: { "version": "0.2.0", "configurations": [ { "name": "Remote", "type": "php", "request": "launch", "port": 9000 } ] } Da das Anlegen eines Unterordners mit dem Namen ''(sp).vscode(sp)'' wegen des Punktes zumindest in Windows nicht ganz so einfach ist, kann //VS Code// diese Aufgabe selbst übernehmen. Man startet //VS Code// und öffnet den Ordner mit dem zu bearbeitenden %%PHP-Skript%%. Nachdem man das Skript in das Editorfenster übernommen hat, startet man den Debugger. Dieser zeigt an, dass ihm die Datei //lauch.json// fehlt - erkennbar am roten Punkt neben dem Zahnrad. Ein Klick auf das Zahnrad und die Auswahl der gewünschten Skriptsprache erzeugen eine Standardversion der Datei. Diese wird auf den oben angegebenen Inhalt gekürzt. Die Zeichenkette //name// kann dabei frei gewählt werden. \\ \\ {{convert4print:tips:0071-1.gif}} \\ \\ === Fehlersuche starten === Für die eigentliche Fehlersuche ist es unabdingbar, dass in //VS Code// exakt das Skript geöffnet ist, das auch vom (c4p)-Gateway aufgerufen wird. Eine Ausnahme von dieser Regel gilt nur, wenn //VS Code// auf einem anderen Rechner läuft als (c4p). Hier wird aber davon ausgegangen, dass sich alle Programme auf einem Rechner befinden. Üblicherweise möchte man ein Skript an einer kritischen Stelle anhalten, um sich dann dort die Inhalte von Variablen ansehen zu können, und ab dann vielleicht in Einschritten das weitere Skript zu verfolgen. Zum Anhalten werden die sogenannten //Haltepunkte// benutzt, die an einem roten Punkt links neben der Zeilennummer erkennbar sind. Haltepunkte können mit einem einfachen Klick links neben die Zeilennummer gesetzt und auch wieder gelöscht werden. Das geht im Editor auch ohne dass der Debugger gestartet ist. Sind die Haltepunkte gesetzt, kann der Debugger durch einen Klick auf das Käfersymbol aufgerufen werden. Am oberen Rand des Fensters erscheint die Statusleiste des Debuggers. Mit einem Klick auf den grünen Pfeil wird der Debugger gestartet. Ausser dass eine schwebende Leiste mit Symbolen zur Steuerung des Debuggers eingeblendet wird, passiert erst einmal nichts weiter. Jetzt kann die Applikation gestartet werden, die das (c4p)-Gateway mit Druckdaten versorgt. Sobald das Gateway die Daten empfangen, verarbeitet und die PCL- und Indexdatei (oder beim Monitor die hochgeladene Datei) abgelegt hat, wird der %%PHP-Interpreter%% unter Nutzung der Kommandozeile des Gateways aufgerufen. Der PHP-Interpreter kommuniziert jetzt über eine interne Netzwerkverbindung (Port 9000) mit dem Debugger und mit //VS Code//. Sobald der Interpreter an einer Skriptzeile angelangt ist, an der ein Haltepunkt gesetzt ist, wird das im Fenster von //VS Code// angezeigt. Der Benutzer hat jetzt die Gelegenheit, sich die Inhalte von Variablen anzusehen oder in Einzelschritten durch das Skript zu gehen. Ein Klick auf den grünen Pfeil in der schwebenden Leiste lässt das Skript - eventuell bis zum nächsten Haltepunkt - weiterlaufen. Das rote Quadrat beendet den Debugger. \\ \\ {{convert4print:tips:0071-2.gif}} \\ \\ === Hinweise === * Bei der Fehlersuche in Skripten kommen Laufzeiten zustande, die in den Bereich vieler Minuten gehen können. Die (c4p)-Gateways haben eine Laufzeitüberwachung der gestarteten Skripte, die nach etwa fünf Minuten anschlägt. Dieser Wert ist in der Registry änderbar - was aber nicht nötig ist, wenn der für die Fehlersuche genutzte Druckauftrag nur genau ein einziges Paar von %%PCL-%% und Indexdateien erzeugt. Werden viele Einzeldruckaufträge erzeugt, kann es zu erheblicher Konfusion kommen, weil das Gateway nach fünf Minuten eine zweite %%PHP-Instanz%% startet! * Wird das Skript vorzeitig beendet - bei der Fehlersuche eigentlich ein Normalfall - kann es sein, dass vor dem erneuten Start des Skriptes manuell aufgeräumt werden muss. Das ist zum Beispiel beim Monitor-Gateway besonders wichtig, weil es das Skript gar nicht startet, wenn es meint, die Duplette einer Datei im Arbeitsverzeichnis gesehen zu haben!