Inhaltsverzeichnis
Eine kurze Analyse des CLI-Befehlszeilenbetriebsmodus von PHP
CLI vs. CGI
PHP-Code direkt ausführen
CLI Get Parameters
Praktische CLI-Befehlszeilenoptionen
-r Parameterübergabe beim direkten Ausführen des Codes
PHP interaktiv ausführen
phpinfo() und installierte Module anzeigen
查看某个文件
总结
Heim Backend-Entwicklung PHP-Problem Eine kurze Diskussion über den CLI-Befehlszeilen-Ausführungsmodus von PHP

Eine kurze Diskussion über den CLI-Befehlszeilen-Ausführungsmodus von PHP

Jun 03, 2021 pm 05:49 PM
php

In diesem Artikel wird Ihnen der CLI-Befehlszeilen-Ausführungsmodus von PHP vorgestellt. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Eine kurze Diskussion über den CLI-Befehlszeilen-Ausführungsmodus von PHP

Eine kurze Analyse des CLI-Befehlszeilenbetriebsmodus von PHP

Bei der Entwicklung erstellen wir nicht nur verschiedene Websites oder Schnittstellen, sondern müssen häufig auch einige Befehlszeilenskripte schreiben, um einige Back-End-Transaktionen abzuwickeln. Zum Beispiel Datenverarbeitung und Statistik. Wenn eine Transaktion lange dauern kann, wird aus Gründen der Effizienz häufig der Timer des Servers verwendet, um das Skript zu einem festen Zeitpunkt zur Verarbeitung aufzurufen, damit der Client eine bessere Benutzererfahrung haben kann. Heute lernen wir den Befehlszeilen-Ausführungsmodus von PHP kennen, der PHP CLI ist.

CLI vs. CGI

Werfen wir zunächst einen Blick auf den Unterschied zwischen CLI und CGI. Wir alle wissen, dass Nginx FastCgi verwendet, um PHP-Dienste aufzurufen. CGI ist eine universelle Programmierschnittstelle, die dem Aufrufer zur Verwendung dieses Programms zur Verfügung gestellt wird. Dieser Servertyp, Nginx, führt PHP-Programme nicht direkt aus, sondern verwendet FastCgi, um PHP-Programme auszuführen und Rückgabeergebnisse zu erhalten.

CLI ist Command Line Interface, also die Befehlszeilenschnittstelle. Wird hauptsächlich als Entwicklungs-Shell-Anwendung für PHP verwendet. Das heißt, Sie verwenden PHP, um Shell-Skripte zu entwickeln. Im Vergleich zur nativen Linux-Shell ist es natürlich viel komfortabler. Im Befehlszeilenzustand können Sie einen bestimmten PHP-Code oder eine bestimmte PHP-Datei direkt mit dem PHP-Befehl ausführen.

Darüber hinaus können wir phpcgi auch direkt in der Befehlszeile verwenden, um einen Teil des PHP-Codes oder eine bestimmte PHP-Datei auszuführen. Was ist der Unterschied zwischen der direkten Verwendung des PHP-Befehls zum Ausführen?

  • CLI-Ausgabe hat keine Header-Informationen

  • CLI ändert das Arbeitsverzeichnis beim Ausführen nicht in das aktuelle Verzeichnis des Skripts

  • CLI gibt eine Nur-Text-Fehlermeldung aus (Nicht-HTML-Format) Wenn ein Fehler auftritt

  • Überschreibt einige Einstellungen in php.ini gewaltsam, da diese Einstellungen in der Shell-Umgebung bedeutungslos sind

// PHP的CLI命令行运行模式浅析.php
echo getcwd();

//  php-cgi dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php
// ...../MyDoc/博客文章/dev-blog/php/202004/source

// php dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php
// ...../MyDoc/博客文章
Nach dem Login kopieren

Wir wählen das typischste Beispiel: Verwenden Sie in der von uns ausgeführten Datei getcwd(). Geben Sie die aus Verzeichnis, in dem das aktuelle Skript ausgeführt wird. Es ist ersichtlich, dass die Ausgabeergebnisse der beiden Ausführungsmethoden offensichtlich unterschiedlich sind. php-cgi gibt die Ausgabe basierend auf dem Verzeichnis aus, in dem sich die Datei befindet, während PHP basierend auf dem Verzeichnis ausgibt, in dem der Befehl aktuell ausgeführt wird.

PHP-Code direkt ausführen

Beim einfachen Debuggen können wir einen Codeabschnitt direkt über die CLI ausführen.

// php -r "echo 121;"
// 121
Nach dem Login kopieren

Das heißt, fügen Sie einfach den Parameter -r hinzu, gefolgt von einem Codeteil, der in Anführungszeichen eingeschlossen werden muss. Und es wird empfohlen, für dieses Zitat einfache Anführungszeichen zu verwenden. Die folgenden Beispiele zeigen, warum einfache Anführungszeichen besser sind.

CLI Get Parameters

Sie können Parameter auch im Befehlszeilenmodus an das Skript übergeben.

// PHP的CLI命令行运行模式浅析.php
print_r($argv);
// php-cgi dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php 1 2 3
// X-Powered-By: PHP/7.3.0
// Content-type: text/html; charset=UTF-8

// php dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php 1 2 3
// Array
// (
//     [0] => dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php
//     [1] => 1
//     [2] => 2
//     [3] => 3
// )
Nach dem Login kopieren

In der Testdatei haben wir die Variable $argv gedruckt. Wenn das PHP-Skript ausgeführt wird, werden alle Parameter der Befehlszeile in der Variablen $argv gespeichert, und es gibt auch eine Variable $argc, die die Anzahl der Parameter speichert.

Wir verwenden immer noch PHP-CGI und PHP, zwei Modi zum Testen. Von hier aus können wir feststellen, dass es sich bei dem von $argv im PHP-CGI-Modus gedruckten Inhalt tatsächlich um Header-Informationen und nicht um spezifische Parameterinformationen handelt. Das ist richtig, schließlich handelt es sich beim CGI-Modus ursprünglich um eine für den Webserver bereitgestellte Schnittstelle, die also Parameter wie Post und Get anstelle von Befehlszeilenparametern empfängt.

Im CLI-Modus erhalten wir den Parameterinhalt normal und $argv[0] speichert immer die aktuell ausgeführte Datei und den Pfad.

Praktische CLI-Befehlszeilenoptionen

Abschließend stellen wir einige häufig verwendete Optionen in der Befehlszeile vor.

-r Parameterübergabe beim direkten Ausführen des Codes

// php -r "var_dump($argv);" app 
// Warning: var_dump() expects at least 1 parameter, 0 given in Command line code on line 1
// 双引号 ",sh/bash 实行了参数替换

// php -r 'var_dump($argv);' app
// array(2) {
//     [0]=>string(19) "Standard input code"
//     [1]=>string(3) "app"
// }

// php -r 'var_dump($argv);' -- -h
// array(2) {
//     [0]=>string(19) "Standard input code"
//     [1]=>string(2) "-h"
// }
Nach dem Login kopieren

Der erste Codeabschnitt meldet direkt eine Warnung, wenn Parameter an den CLI-Code übergeben werden, der mit doppelten Anführungszeichen ausgeführt wird. Tatsächlich ist es leicht zu verstehen, dass das $ in doppelten Anführungszeichen die sh/bash des Systems denken lässt, dass es sich um eine Variable handelt, und die Variablenparameter ersetzt. Daher empfiehlt es sich eher, für tägliche einfache Tests einfache Anführungszeichen zu verwenden.

Der zweite Codeabschnitt kann den übergebenen Parameterinhalt normal drucken. Die dritte Codezeile erfordert, dass, wenn Inhalte mit dem Symbol „-“ übergeben werden müssen, zuerst ein Listentrennzeichen für Parameter „--“ angegeben werden muss. Dies liegt daran, dass der Inhalt von -xxx den PHP-Befehl dazu bringt, zu denken, dass es sich um eine Befehlsoption und nicht um einen Parameter handelt. Daher fügen wir ein Trennzeichen hinzu, um den Parameterinhalt nach dem Trennzeichen unverändert in den Code zu übergeben.

PHP interaktiv ausführen

// php -a
// php > $a = 1;
// php > echo $a;
// php > 1
Nach dem Login kopieren

Fügen Sie eine Option -a hinzu und PHP wird interaktiv ausgeführt. Wir können Code schreiben oder alles direkt im interaktiven Zustand ausführen.

phpinfo() und installierte Module anzeigen

Diese beiden sollten die beiden Optionen sein, die jeder häufig verwendet.

// 输出 phpinfo()
// php -i

// 输出 PHP 中加载的模块
// php -m

// 查看模块详细信息
// php --ri swoole
Nach dem Login kopieren

Darüber hinaus können wir auch den Befehl --ri module name verwenden, um die detaillierten Informationen eines bestimmten Erweiterungsmoduls anzuzeigen. Hier können wir beispielsweise die Swoole-Erweiterungsversion und zugehörige Konfigurationsinformationen anzeigen.

查看某个文件

// 显示去除了注释和多余空白的源代码
// php -w dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php
// <?php
//  echo getcwd(); print_r($argv);

// 通过 linux 管道读取输入
// cat dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php | php -r "print file_get_contents(&#39;php://stdin&#39;);"
// ......这个文件里面所有的内容
Nach dem Login kopieren

最后两个小技巧,一个是通过 -w 选项,我们可以打印这个 php 文件中所有非注释和换行的内容。可以看成是像前端的代码压缩一样的能力。我们这个测试文件中有非常多的注释,通过这个命令后我们打印出来的内容是去除掉所有注释和空白行的结果。

另一个是我们可以用 linux 管道的方式向 PHP CLI 发送数据。这里我们通过 cat 查看我们的测试文件然后通过管道发送给 PHP CLI,在脚本中使用 STDIN 来读取管道发送过来的内容完成了整个文件内容的打印。这里我们没进行任何过滤,所以打印的是整个文件里面的内容,大家可以运行这个命令来测试。

总结

其实命令行模式运行的时候还有很多的选项,这里我们只是选取了一部分非常有用的内容进行展示。当然,大部分框架都提供了用于命令行的脚本框架,比如 laravel 中可以通过 php artisan make:command 来创建命令行脚本,然后使用 php artisan 来运行框架中的脚本。这些内容将来我们在学习框架方面知识的内容将会进行详细的讲解。

命令行 CLI 模式的应用非常广泛,几乎任何项目中都会使用到,所以,深入的学习掌握它将会使我们大受裨益。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202004/source/PHP%E7%9A%84CLI%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%BF%90%E8%A1%8C%E6%A8%A1%E5%BC%8F%E6%B5%85%E6%9E%90.php
Nach dem Login kopieren

推荐学习:php视频教程

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über den CLI-Befehlszeilen-Ausführungsmodus von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles