Bei der Entwicklung von Laravel -Anwendungen verwenden wir häufig den handwerklichen Befehl, um verschiedene Aufgaben auszuführen. Der Handwerkskandidat ist ein sehr leistungsstarkes Befehlszeilen -Tool, das das Laravel -Framework bereitstellt. Es hilft Entwicklern, die Ausführung vieler Aufgaben zu vereinfachen, z. B. Datenbankmigration, Warteschlangenverarbeitung, Zeitaufgaben usw.
Wenn wir jedoch langjährige Handwerkerbefehle ausführen, können im Hintergrund mehrere Befehle gleichzeitig ausgeführt werden. Um diese Prozesse zu unterscheiden, insbesondere bei der Verwendung von Tools zur Prozessüberwachung wie HTOP- oder PS -Befehlen, möchten wir in der Lage sein, einen dynamischen Prozesstitel festzulegen, der für jeden Prozess leicht erkennbar ist. Glücklicherweise können wir dies durch die CLI_get_process_title -Funktion von PHP erreichen.
In diesem Artikel werden wir untersuchen, wie dynamische Prozesstitel basierend auf der Funktion cli_get_process_title zum Befehl laravel artisan basierend auf der Funktion "CLI_get_process_title" hinzufügen, um die Anzeige und Identifizierung verschiedener Prozesse in der Befehlszeilenschnittstelle zu erleichtern.
cli_get_process_title ist eine PHP -Funktion, die den Titel des aktuellen PHP -Prozesses erhält. Es gibt eine Zeichenfolge zurück, die den Anzeigenamen des aktuellen Prozesses im Betriebssystem darstellt. Durch die Änderung dieses Titels können wir den Prozess in der Befehlszeilenschnittstelle einen beschreibenderen Namen anzeigen lassen, der uns hilft, Prozesse besser verwalten und zu überwachen.
Standardmäßig ist der Titel des PHP -Prozesses normalerweise "PHP" oder eine ähnliche generische Kennung, aber mit cli_get_process_title können wir ihn in einen erkennbaren Namen ändern, wie z.
Um dynamische Prozesstitel für den Handwerksbefehl von Laravel festzulegen, müssen wir den Prozesstitel während der Ausführung des Befehls ändern. Hier ist eine einfache Schrittführer:
Zunächst müssen wir einen benutzerdefinierten handwerklichen Befehl erstellen. Sie können einen neuen Handwerksbefehl erstellen, indem Sie rennen:
<span><span>php artisan make:</span><span><span class="hljs-built_in">command</span></span><span> SetProcessTitleCommand
</span></span>
Dadurch wird im Verzeichnis app/console/Befehl eine neue Befehlsklassendatei setProcessTitleCommand.php generiert.
Als nächstes müssen wir die Funktion cli_set_process_title in der Befehlsklasse verwenden, um den Prozesstitel festzulegen. Öffnen Sie die Datei setProcessTitleCommand.php und fügen Sie den Code in die Handle -Methode hinzu, um den Prozesstitel dynamisch festzulegen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-keyword">namespace</span></span><span> </span><span><span class="hljs-title class_">App</span></span><span>\</span><span><span class="hljs-title class_">Console</span></span><span>\</span><span><span class="hljs-title class_">Commands</span></span><span>;
</span><span><span class="hljs-keyword">use</span></span><span> </span><span><span class="hljs-title">Illuminate</span></span><span>\</span><span><span class="hljs-title">Console</span></span><span>\</span><span><span class="hljs-title">Command</span></span><span>;
</span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">SetProcessTitleCommand</span></span><span> </span><span><span class="hljs-keyword">extends</span></span><span> </span><span><span class="hljs-title">Command</span></span><span>
{
</span><span><span class="hljs-comment">// Der Name des Befehls</span></span><span>
</span><span><span class="hljs-keyword">protected</span></span><span> </span><span><span class="hljs-variable">$signature</span></span><span> = </span><span><span class="hljs-string">'set:process-title {title}'</span></span><span>;
</span><span><span class="hljs-comment">// Beschreibung des Befehls</span></span><span>
</span><span><span class="hljs-keyword">protected</span></span><span> </span><span><span class="hljs-variable">$description</span></span><span> = </span><span><span class="hljs-string">'Legen Sie den Titel des aktuellen Prozesses fest'</span></span><span>;
</span><span><span class="hljs-comment">// Methoden zum Ausführen von Befehlen</span></span><span>
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">handle</span></span><span>(</span><span><span class="hljs-params"></span></span><span>)
{
</span><span><span class="hljs-comment">// Befehlszeilenparameter abrufen</span></span><span>
</span><span><span class="hljs-variable">$title</span></span><span> = </span><span><span class="hljs-variable language_">$this</span></span><span>-></span><span><span class="hljs-title function_ invoke__">argument</span></span><span>(</span><span><span class="hljs-string">'title'</span></span><span>);
</span><span><span class="hljs-comment">// verwendencli_set_process_titleSetzen Sie den Prozesstitel</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>(</span><span><span class="hljs-string">'cli_set_process_title'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">cli_set_process_title</span></span><span>(</span><span><span class="hljs-variable">$title</span></span><span>);
</span><span><span class="hljs-variable language_">$this</span></span><span>-></span><span><span class="hljs-title function_ invoke__">info</span></span><span>(</span><span><span class="hljs-string">"Der Prozesstitel wurde auf festgelegt: <span class="hljs-subst">$title</span></span></span><span>");
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-variable language_">$this</span></span><span>-></span><span><span class="hljs-title function_ invoke__">error</span></span><span>(</span><span><span class="hljs-string">'aktuellPHPVersion nicht unterstütztcli_set_process_titleFunktion'</span></span><span>);
}
}
}
</span></span>
Im obigen Code haben wir Folgendes gemacht:
Ein neuer Kunsthandwerksbefehlssatz : Process-Title wird erstellt, der einen Befehlszeilenparameter -Titel akzeptiert, der der Titel ist, den wir für den Prozess festlegen möchten.
In der Handlungsmethode verwenden wir cli_set_process_title , um den Prozesstitel dynamisch festzulegen.
Wenn die Funktion cli_set_process_title nicht verfügbar ist (z. B. die PHP -Umgebung unterstützt diese Funktion nicht), wird der Benutzer aufgefordert, dass die aktuelle Umgebung die Funktion nicht unterstützt.
Anschließend müssen wir diesen neuen Befehl in der Datei App/Console/kernel.php registrieren. Fügen Sie einen Verweis auf den neuen Befehl im $ Command -Array hinzu:
<span><span><span class="hljs-keyword">protected</span></span><span> </span><span><span class="hljs-variable">$commands</span></span><span> = [
</span><span><span class="hljs-title class_">Commands\SetProcessTitleCommand</span></span><span>::</span><span><span class="hljs-variable language_">class</span></span><span>,
];
</span></span>
Jetzt können wir die Einstellungen des Prozesstitels testen, indem wir den folgenden Befehl ausführen:
<span><span>php artisan </span><span><span class="hljs-built_in">set</span></span><span>:process-title </span><span><span class="hljs-string">"My Custom Process Title"</span></span><span>
</span></span>
Wenn alles einwandfrei funktioniert, können Sie den Prozesstitel über den PS -Befehl des Systems oder ähnliche Tools anzeigen. Sie sollten in der Lage sein zu sehen, dass der Titel des Prozesses erfolgreich auf " meinen benutzerdefinierten Prozesstitel " festgelegt wurde.
Wenn Sie den Prozesstitel dynamisch in langlebigen Befehlen aktualisieren müssen, können Sie während der Ausführung des Befehls regelmäßig Cli_set_process_title aufrufen. Bei der Verarbeitung einer Task -Warteschlange möchten Sie beispielsweise den Prozesstitel dynamisch basierend auf der aktuell verarbeiteten Aufgabe aktualisieren.
Hier ist ein Beispiel, das zeigt, wie man Prozesstitel bei der Ausführung eines langlebigen Befehls dynamisch aktualisiert:
<span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">handle</span></span><span>(</span><span><span class="hljs-params"></span></span><span>)
{
</span><span><span class="hljs-variable">$tasks</span></span><span> = </span><span><span class="hljs-variable language_">$this</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getTasks</span></span><span>(); </span><span><span class="hljs-comment">// Angenommen, Sie erhalten eine Reihe von Aufgaben</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$tasks</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$index</span></span><span> => </span><span><span class="hljs-variable">$task</span></span><span>) {
</span><span><span class="hljs-variable">$title</span></span><span> = </span><span><span class="hljs-string">"Aufgaben erledigen <span class="hljs-subst">$index</span></span></span><span> / " . </span><span><span class="hljs-title function_ invoke__">count</span></span><span>(</span><span><span class="hljs-variable">$tasks</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>(</span><span><span class="hljs-string">'cli_set_process_title'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">cli_set_process_title</span></span><span>(</span><span><span class="hljs-variable">$title</span></span><span>);
}
</span><span><span class="hljs-comment">// Aufgaben erledigen</span></span><span>
</span><span><span class="hljs-variable language_">$this</span></span><span>-></span><span><span class="hljs-title function_ invoke__">processTask</span></span><span>(</span><span><span class="hljs-variable">$task</span></span><span>);
</span><span><span class="hljs-comment">// Den Effekt anzeigen,Lassen Sie uns die Verarbeitungszeit jeder Aufgabe hier simulieren</span></span><span>
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);
}
}
</span></span>
Im obigen Code durchquert der Befehl eine Reihe von Aufgaben und aktualisiert den Prozesstitel dynamisch, sobald jede Aufgabe verarbeitet wird. Auf diese Weise können Sie den Status des aktuellen Prozesses in Echtzeit in der Befehlszeile sehen.
Über die Funktionen cli_get_process_title und cli_set_process_title können wir dynamische Prozesstitel für die Befehle von Laravel Artisan festlegen. Dies ist sehr hilfreich, um verschiedene Prozesse bei der Ausführung mehrerer Hintergrundprozesse in der Befehlszeile zu unterscheiden, insbesondere bei der Verwendung langlebiger Befehle in Entwicklungs- und Produktionsumgebungen.
Obwohl die Funktion cli_set_process_title nicht von allen PHP -Versionen unterstützt wird, ist sie ein sehr nützliches Instrument für Entwickler, die das Prozessmanagement und die Überwachung benötigen. Hoffentlich hilft Ihnen dieser Artikel, diese Funktion in Ihrem Laravel -Projekt zu implementieren und die Arbeitseffizienz und das Systemmanagementerfahrung zu verbessern.