Heim  >  Artikel  >  Backend-Entwicklung  >  Remote-Multisession-Debugging für PHP

Remote-Multisession-Debugging für PHP

巴扎黑
巴扎黑Original
2017-09-26 10:11:151577Durchsuche

Dieser Artikel stellt Ihnen hauptsächlich relevante Informationen zum PHP-Remote-Multi-Session-Debugging durch Beispielcodes und Bilder vor. Es hat einen gewissen Referenz-Lernwert für alle, die es brauchen Lassen Sie uns gemeinsam mit dem Herausgeber lernen.

1. Hintergrundeinführung

Dieser Artikel stellt hauptsächlich den relevanten Inhalt zum PHP-Remote-Multi-Session-Debugging vor Referenz. Ich werde unten nicht viel sagen. Schauen wir uns die detaillierte Einführung an:

Welches Problem wurde gelöst? Das Projekt „mysite.com“ ruft die REST-Schnittstelle des Projekts „api.mysite.com“ auf und erleichtert das direkte Debuggen der Schnittstelle im Projekt „api.mysite.com“, wenn eine Aktion unter dem Projekt „www.mysite.com“ ausgelöst wird.

Für welche Szenarien ist es geeignet: Projektübergreifendes Debuggen, Remote-Debugging, bequemer und einfacher zu verwenden als einfaches var_dump.

2. Remote-Debugging-Konfiguration

Nginx+PHP-fpm-Umgebung, php.ini-Erweiterung konfigurieren


[Xdebug]
zend_extension = /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug.remote_enable=1
remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey=XDEBUG

Hinweis: Ob das PHP der CLI-Umgebung und das PHP von fpm unterschiedliche php.ini-Konfigurationsdateien verwenden, müssen Sie konfigurieren das PHP, das fpm .ini entspricht

Überprüfen Sie, ob die Konfiguration korrekt ist

Remote-Port (FPM-Host 10.99.1.185) Port 9000 dem lokalen Port 9000 zuordnen:


ssh -CNg -R 9000:localhost:9000 root@10.99.1.185
Nach der lokalen Installation von openssh können Sie den SSH-Befehl direkt verwenden


Das ist möglich Sehen Sie auf dem Server, dass Port 9000 von SSH belegt ist

PHPSTORM muss auch Xdebug konfigurieren, mehrere Debugging-Sitzungen so konfigurieren, dass sie gleichzeitig aktiviert werden, Port 9000 und akzeptieren externe Anfragen.

Projektbezogene Pfadzuordnung, Domänenname, Port konfigurieren

3. Sitzungsübergreifende (projektübergreifende) Debugging-Konfiguration

Der Kern des projektübergreifenden Debuggings besteht darin, die Bedingungen, die das Xdebug-Debugging auslösen, als Parameter zu senden api.mysite.com-Projekt oder andere Folgeprojekte.

www-Projektcode lautet wie folgt:

frontend.php


<?php

$personJson = file_get_contents(&#39;http://api.mysite.com/backend.php&#39;);

$person = json_decode($personJson);

var_dump($person);
API-Projektcode lautet wie folgt:

backend .php



<?php

class Person {

public $Name;

public $Email;

}

$person = new Person();

$person->Name = "Maarten";

$person->Email = "maarten.balliauw@jetbrains.com";

echo json_encode($person);
Sie müssen das WWW-Projekt ändern und die von xdebug erforderlichen Netzwerkanforderungsparameter hinzufügen, um Remote-Debugging auszulösen:


<?php

$debuggingQuerystring = &#39;&#39;;

if (isset($_GET[&#39;XDEBUG_SESSION_START&#39;])) { // xdebug

$debuggingQuerystring = &#39;XDEBUG_SESSION_START=&#39; . $_GET[&#39;XDEBUG_SESSION_START&#39;];

}

if (isset($_COOKIE[&#39;XDEBUG_SESSION&#39;])) { // xdebug (cookie)

$debuggingQuerystring = &#39;XDEBUG_SESSION_START=PHPSTORM&#39;;

}

if (isset($_GET[&#39;start_debug&#39;])) { // zend debugger

$debuggingQuerystring = &#39;start_debug=&#39; . $_GET[&#39;start_debug&#39;];

}

$personJson = file_get_contents(&#39;http://api.mysite.com/backend.php?&#39;
. $debuggingQuerystring);

$person = json_decode($personJson);

var_dump($person);
Private Projekte können Cookie-Parameter zur allgemeinen Netzwerkanforderungskapselungsklasse hinzufügen:


curl_setopt($this->ch, CURLOPT_COOKIE, "XDEBUG_SESSION=XDEBUG");

4. Debugging-Prozess

  • Stellen Sie sicher, dass die Debugging-Parameter wurden an die API-Schnittstelle weitergeleitet

  • Erhöhen Sie die Anzahl der Sitzungen, die gleichzeitig debuggt werden können

  • Debugging-Überwachung aktivieren und aktivieren serverseitiger Xdebug

Das obige ist der detaillierte Inhalt vonRemote-Multisession-Debugging für PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn