Heim > Backend-Entwicklung > PHP-Problem > Deliverer, der PHP-Code-Retter, auf den Sie so lange gewartet haben, ist da!

Deliverer, der PHP-Code-Retter, auf den Sie so lange gewartet haben, ist da!

醉折花枝作酒筹
Freigeben: 2023-03-10 21:10:02
nach vorne
1973 Leute haben es durchsucht

Wenn ein Code die gesamte Aufrufkette nicht sehen kann, benötigen Sie dann ein Tool, das Sie bei der eindeutigen Abfrage der gesamten kompletten Aufrufkette unterstützt? Dieses Mal führt Sie der Editor dazu, mehr über Deliverer in PHP zu erfahren, sodass Sie sich nicht mehr um die Fehlerbehebung im Code kümmern müssen.

Deliverer, der PHP-Code-Retter, auf den Sie so lange gewartet haben, ist da!

Vor ein paar Tagen übernahm ein Gruppenfreund einen Teil des Ahnencodes. Nach langer Fehlerbehebung war er nicht bereit, mit dem Eimer davonzulaufen und ihm schließlich zu helfen Den vollständigen Prozess finden Sie unter https://mengkang.net/1470.html. Letztendlich habe ich jedoch eine gewisse Positionierung des Codes basierend auf persönlicher Erfahrung. Der tatsächlich aufgerufene Link unterscheidet sich von dem, was ich erwartet habe . Da ich nicht die vollständige Aufrufkette sah, dachte ich, ich bräuchte ein Tool, das mich bei der expliziten Abfrage der gesamten Aufrufkette unterstützt.

Also habe ich dieses Tool hauptsächlich für unbekannte Projekte und Online-Szenarien entwickelt, die sich in alltäglichen Umgebungen nur schwer reproduzieren lassen.

deliver Der Retter des angestammten Codes entkommt https://github.com/zhoumengka...

Wenn Ihr Projekt nicht so schlecht ist und die tägliche Umgebung in Ordnung ist, dann ist xdebug der beste Weg, sich mit einem Projekt vertraut zu machen. Dieses Tool dient hauptsächlich der Behebung von Online-Problemen.
Ähnliche Tools umfassen das PHPTrace-Implementierungsprinzip von 360, das etwas anders ist

Funktionspunkte

  • Sie können die Ausgabe basierend auf Funktionsnamen, Klassennamen, Methodennamen und Routen filtern

  • Sie können die angegebenen Daten abfragen Inhalt filtern Nach n-mal beenden

  • Sie können die gesamte Aufrufkette basierend auf der Anforderungs-ID wiedergeben

  • Der gefilterte Inhalt wird hervorgehoben

  • Wenn der Aufrufstapel tief ist, können Sie -l angeben Die Anzeige von Deep Calls ausblenden

Prinzip

Tatsächlich ist es relativ einfach. Der erste Schritt besteht darin, Protokolle zu sammeln, und der zweite Schritt besteht darin, die Protokolle zu analysieren.

Der erste Schritt

In der PHP_MINIT-Phase verwenden Sie zend_set_user_opcode_handler, um die Verarbeitung und Analyse von drei Arten von Opcodes einzurichten: ZEND_DO_UCALL, ZEND_DO_FCALL_BY_NAME und ZEND_DO_FCALL.

Beachten Sie, dass Aufrufe einiger integrierter Funktionen und Methoden abgedeckt werden und wir nach Typ filtern können.

Erstellen Sie dann eine neue Protokolldatei in der Phase PHP_RINIT und schreiben Sie die angeforderten Informationen.

pid-ts sapi http_method http_url
Nach dem Login kopieren

Drucken Sie die Aufrufstapelinformationen im benutzerdefinierten Handler während des Anforderungsprozesses aus zweiter Schritt

Verwenden Sie bin/deliverer, um die gesammelten Protokolle zu analysieren und zu organisieren. Dies ist ein PHP-Skript, daher werde ich nicht auf Details eingehen.

Installieren und verwenden

Kompilieren
$ phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && sudo make install
Nach dem Login kopieren

php.ini konfigurieren

Anhängen

[deliverer]
extension=deliverer.so
Nach dem Login kopieren
Neu starten. php-fpm

sudo service php-fpm restart
Nach dem Login kopieren

U se Analysetools

Kann ./bin/deliverer verschieben zu Das Verzeichnis, das Sie für geeignet halten. Wenn Sie einen Teil meines eigenen angestammten Codes (mein Blog) von vor langer Zeit verwenden, um ihn im aktuellen Verzeichnis auszuführen

$ chmod +x deliverer
Nach dem Login kopieren
$ ./bin/deliverer -t
Nach dem Login kopieren

, überwacht dies immer die Ausführung aller PHP Prozesse

$ ./bin/deliverer -tAction::initUser -n3 -l5
Nach dem Login kopieren

Deliverer, der PHP-Code-Retter, auf den Sie so lange gewartet haben, ist da!

Deliverer, der PHP-Code-Retter, auf den Sie so lange gewartet haben, ist da!

Deliverer, der PHP-Code-Retter, auf den Sie so lange gewartet haben, ist da!Parameter

WertErklärung-tA ction::initUserFilteranfragen, die diesen Aufruf enthalten-n 3... Verwenden Sie -v requestId, um den gesamten Aufrufstapel im Detail anzuzeigen Empfohlenes Lernen:
php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDeliverer, der PHP-Code-Retter, auf den Sie so lange gewartet haben, ist da!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage