Heim >类库下载 >PHP类库 >Einige aktuelle Erfahrungen beim Schreiben von PHP-Befehlszeilenprogrammen

Einige aktuelle Erfahrungen beim Schreiben von PHP-Befehlszeilenprogrammen

高洛峰
高洛峰Original
2016-10-14 10:16:581272Durchsuche

PHP, PHP, ja, es ist immer noch PHP. Ich habe vier Artikel zum Thema PHP geschrieben (>, >, >, >), aber ich habe immer noch das Gefühl, dass es das nicht ist Genug, aber ich möchte dennoch einige meiner Erfahrungen mit PHP zum Schreiben von Befehlszeilenprogrammen in den letzten sechs Monaten zusammenfassen. Ich hoffe, dass ich während des Überprüfungsprozesses auch sublimiert und verbessert werde wurde geschrieben:
1. Lassen Sie das PHP-Programm selbst ausführen
Das hier erwähnte PHP „selbst ausführen“ bedeutet nicht, PHP in Binärcode zu kompilieren, damit es über ausführbare Berechtigungen verfügt. Es bedeutet das Hinzufügen einer Datei Header zu PHP: #!/usr/bin/php, und erteilen Sie der Datei dann die Ausführungsberechtigung über chmod, damit Sie nicht jedes Mal PHP vor der Datei hinzufügen müssen, um sie auszuführen. Weitere Informationen finden Sie unter
>. 2. Lassen Sie Ihr Programm das aktuell belegte Terminal aufgeben
Wenn die Ausführung Ihres Programms lange dauert oder einfach ständig ausgeführt werden muss, können wir es in den Hintergrund stellen Ich würde am Ende ein & hinzufügen, um es beim Ausführen in den Hintergrund zu stellen, oder einen Bildschirm oder tmux ausführen und es darin ausführen. Jetzt gibt es eine bessere Lösung, nämlich es zuzulassen Sich selbst in den Hintergrund stellen. Weitere Informationen finden Sie unter
3. Zusätzlich zur manuellen Eingabe von Daten können Sie auch Daten von anderen empfangen In der Linux-Welt ist es eine große Ehre um eine Mission mit anderen kleinen Programmen abzuschließen ~ Wie kann ich das tun? Weitere Informationen finden Sie unter:
>
Es gibt ein Sprichwort: „Wenn man die Vergangenheit Revue passieren lässt und Neues lernt, kann man etwas Neues lernen.“ .‘ Wir haben die Vergangenheit überprüft und festgestellt, dass wir nichts Neues gelernt haben, also reden wir weiter über das Neue. Richtig :) Ich persönlich finde, dass die aktuelle PHP-Skripttechnologie sehr ausgereift und vollständig ist und leicht zu erlernen ist Wenn ich PHP zum Schreiben von Befehlszeilenskripten verwende, verwende ich es hauptsächlich in zwei Richtungen: Hintergrunddienste, Befehlszeilenprogramme, da der Hintergrunddienst ständig auf dem Server ausgeführt werden muss Beim Speicher muss besonderes Augenmerk auf die Optimierung des Codes gelegt werden. Einige Dinge im Befehlszeilenprogramm können direkt auf den Hintergrunddienst angewendet werden. Ok, beginnen wir mit dem Üben: Hintergrunddienst:
1. Einlaufen der Hintergrund
Es wurde vereinbart, dass es sich um einen Hintergrunddienst handelt. Möchten Sie weiterhin gehorsam in den Hintergrund gehen?
2. Langzeitgedächtnis
Der erste Punkt, der Das Programm muss lange laufen, daher kann es anscheinend nur in while(0) platziert werden. Als ich vorhatte, diese Methode zu verwenden, habe ich viele Informationen im Internet gelesen, die die Verwendung dieser Methode nicht empfehlen Aber was soll ich verwenden, wenn ich diese Methode nicht verwende? Das ist eine Funktion nach 5.3, und jetzt, da der Server Wert auf Stabilität legt, verwenden die meisten Leute Version 5.2 Im Code herumspringen? Letzten Endes habe ich ihn mehr als einen Monat lang genutzt, es fühlt sich sehr gut und leistungsstark an Speicher müssen wir das Problem der Speicherfreigabe erwähnen. Obwohl es nicht wie C ist, müssen Sie den Speicher selbst zuweisen und bereinigen, aber Sie müssen trotzdem darauf achten. Aber Vorsicht wird Sie retten. Wenn es um die Speichernutzung geht, hält sich der Autor an einen Grundsatz: Der Speicher in der Funktion wird nicht ignoriert und der Speicher im Hauptprogramm wird deaktiviert. Dies kann auch vermieden werden unerwartete Effekte, die durch doppelte Namen von Variablen verursacht werden. (Natürlich scheint PHP Variablen mit demselben Namen zuzulassen, wer später kommt, wird wirksam, aber es ist wichtig, eine gute Angewohnheit zu entwickeln :))
3. Ausgabe deaktivieren
Bedeutet das Deaktivieren der Ausgabe, dass die Verwendung von Echo deaktiviert wird? Ja, aber das ist nicht ganz richtig, da es in der Linux-Welt zwei Arten von Ausgaben gibt, nämlich die normale Ausgabe und die andere natürlich die normale Ausgabe. Egal wie gut der Code geschrieben ist, es wird sofort ein Fehler ausgegeben, und Fehler müssen unterdrückt werden. Die Ausführung dieses Befehls führt in den meisten Fällen zu zwei Ergebnissen. Es ist einfach, dies zu erreichen. Viele Leute gehen davon aus, dass dies der Fall ist. Wenn ein Fehler auftritt, wird auf vielen Webseiten die Meldung angezeigt, dass die MySQL-Verbindung fehlgeschlagen ist Wenn Sie diese Fehler nicht beheben, wird das Programm aus Sicherheitsgründen einfach beendet , man muss wissen, wie man Fehler unterdrückt. Darüber hinaus ist es für einen Mann auch ein Zeichen von Reife:)
      4 .Signalkontrolle
Wie kann ein komplettes Hintergrundprogramm durch eine gewalttätige Methode beendet werden? „kill -9 pid“? Es gibt auch eine perfekte Signallösung in PHP. Lassen Sie Ihr Programm starten, stoppen, neu starten, der Status ist einfach etwas, das Sie zufällig auswählen können.
5. Betriebsprotokoll
Bei Hintergrundprogrammen müssen, wenn die Ausgabe deaktiviert ist, Protokolle geschrieben werden, vom Start bis zu dem, was getan wird, bis hin zum Zeitpunkt und aus welchem ​​Grund es beendet wird. Bevor ich das Signal verstanden habe, gibt es im Protokoll nur Start und Ausführung Datensätze, und dann gibt es Start- und Ausführungsdatensätze, was frustrierend ist. Später kann ich endlich wissen, wann das Programm beendet wurde :) Beim Schreiben des Protokolls habe ich eine sehr coole Funktion file_put_contents gefunden, und sie unterstützt das Anhängen Sie können „tail -f log name“ verwenden, um den laufenden Status in Echtzeit anzuzeigen:)
Befehlszeilenprogramm:
6. Echo ist auch verrückt
Es wird in PHP-Best Practices erwähnt: echo Weil es das gibt Kein Rückgabewert, es ist viel schneller als print. Sie können Kommas verwenden, um mehrere Sätze nach dem Echo zu trennen, und die Eingabeeffizienz ist viel schneller als die Verbindung mit Punkten. Daher hoffe ich, dass dies der Fall ist Schreiben Sie sie in eine Datei, ich wünschte, ich könnte diese Dinge ohne „.“ verbinden, denn ich möchte keine Zeit mit Verbindungszeichenfolgen verschwenden! Also war ich angenehm überrascht, dass ob_start es kann! ! Zum Beispiel:
ob_start;
echo xxx,xxx,xxxx;
file_put_contents('filename',ob_get_contents);
ob_clean;
Der Effekt ist einfach da, Wer weiß, wer es verwendet.
7. Korrigieren Sie den Zeitzonenfehler
Die Installation eines Linux-Systems ist sehr einfach. Was mich jedoch sehr deprimiert, ist, dass viele Leute das Linux-System in der chinesischen Version installieren können (weil die Installation Die Sprache ist Chinesisch, aber die Zeit wird auf New Yorker Zeit geändert (West 8. Bezirk, China ist Ost 8. Bezirk). Erwarten Sie also nicht, dass standardmäßig alles korrekt ist, um sicherzustellen, dass Ihr Programm hat keine Probleme beim Schreiben von Protokollen oder bei der Ausgabe der Uhrzeit. Am besten legen Sie die Zeitzone selbst fest: date_default_timezone_set('PRC') :)

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

In Verbindung stehende Artikel

Mehr sehen