Table des matières
Une brève analyse du mode de fonctionnement en ligne de commande CLI de PHP
CLI et CGI
Exécuter le code PHP directement
CLI Obtenir les paramètres
Options pratiques de la ligne de commande CLI
-r Passage de paramètre lors de l'exécution directe du code
Exécutez PHP de manière interactive
Afficher phpinfo() et les modules installés
查看某个文件
总结
Maison développement back-end Problème PHP Une brève discussion sur le mode d'exécution de la ligne de commande CLI de PHP

Une brève discussion sur le mode d'exécution de la ligne de commande CLI de PHP

Jun 03, 2021 pm 05:49 PM
php

Cet article vous présentera le mode d'exécution en ligne de commande CLI de PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Une brève discussion sur le mode d'exécution de la ligne de commande CLI de PHP

Une brève analyse du mode de fonctionnement en ligne de commande CLI de PHP

Lorsque nous faisons du développement, nous ne faisons pas seulement divers sites Web ou interfaces, c'est il est également souvent nécessaire d'écrire des scripts de ligne de commande pour gérer certaines transactions back-end. Par exemple, le traitement des données et les statistiques. Bien entendu, par souci d'efficacité, lorsqu'une transaction peut prendre beaucoup de temps, le timer du serveur est souvent utilisé pour appeler le script à une heure fixe pour le traitement, afin que le client puisse avoir une meilleure expérience utilisateur. Aujourd'hui, nous allons découvrir le mode d'exécution en ligne de commande de PHP, qui est PHP CLI.

CLI et CGI

Tout d'abord, jetons un coup d'œil à la différence entre CLI et CGI. Nous savons tous que Nginx utilise FastCgi pour appeler les services PHP. CGI est une interface de programmation universelle, qui est une interface fournie à l'appelant pour utiliser ce programme. Ce type de serveur, Nginx, n'exécute pas directement les programmes PHP, mais utilise FastCgi pour exécuter les programmes PHP et obtenir des résultats de retour.

CLI est Command Line Interface, qui est l'interface de ligne de commande. Principalement utilisé comme application shell de développement pour PHP. Autrement dit, utilisez PHP pour développer des scripts shell. Comparé au shell Linux natif, c'est bien sûr beaucoup plus pratique. Dans l'état de ligne de commande, vous pouvez exécuter un certain code PHP ou un certain fichier PHP en utilisant directement la commande php.

De plus, nous pouvons également utiliser directement phpcgi sur la ligne de commande pour exécuter un morceau de code PHP ou un certain fichier PHP. Quelle est la différence entre celui-ci et l'utilisation directe de la commande php pour l'exécuter ?

  • La sortie de la CLI ne contient aucune information d'en-tête

  • La CLI ne changera pas le répertoire de travail en répertoire actuel du script lors de l'exécution

  • La CLI génère un message d'erreur en texte brut (format non HTML) lorsqu'une erreur se produit

  • Remplacement forcé de certains paramètres dans php.ini car ceux-ci settings Cela n'a aucun sens dans un environnement shell

// 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/博客文章
Copier après la connexion

Choisissons l'exemple le plus typique Dans le fichier que nous exécutons, nous utilisons getcwd() pour afficher le répertoire où le script actuel est en cours d'exécution, comme on peut le voir, les résultats de sortie des deux modes de fonctionnement sont évidemment différents. Les sorties php-cgi sont basées sur le répertoire où se trouve le fichier, tandis que les sorties php sont basées sur le répertoire où la commande est actuellement exécutée.

Exécuter le code PHP directement

Lors d'un débogage simple, nous pouvons exécuter un morceau de code directement via la CLI.

// php -r "echo 121;"
// 121
Copier après la connexion

C'est-à-dire, ajoutez simplement le paramètre -r, suivi d'un morceau de code, qui doit être placé entre guillemets. Et il est recommandé d'utiliser des guillemets simples pour ce guillemet. Les exemples suivants montreront pourquoi les guillemets simples sont meilleurs.

CLI Obtenir les paramètres

Vous pouvez également transmettre des paramètres au script en mode ligne de commande.

// 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
// )
Copier après la connexion

Dans le fichier de test, nous avons imprimé la variable $argv. Lorsque le script PHP est exécuté, tous les paramètres de la ligne de commande seront enregistrés dans la variable $argv, et il existe également une variable $argc qui enregistrera le nombre de paramètres.

Nous utilisons toujours php-cgi et php, deux modes de test. De là, nous pouvons constater que le contenu imprimé par $argv en mode php-cgi est en fait des informations d'en-tête, pas des informations de paramètres spécifiques. C'est exact, après tout, le mode CGI est à l'origine une interface fournie pour le serveur Web, il reçoit donc des paramètres tels que post et get à la place des paramètres de ligne de commande.

En mode CLI, nous obtenons le contenu du paramètre normalement, et $argv[0] enregistre toujours le fichier et le chemin en cours d'exécution.

Options pratiques de la ligne de commande CLI

Enfin, nous introduisons quelques options couramment utilisées dans la ligne de commande.

-r Passage de paramètre lors de l'exécution directe du code

// 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"
// }
Copier après la connexion

Le premier morceau de code signalera directement un avertissement lors de la transmission de paramètres au code CLI exécuté entre guillemets doubles. En fait, c'est facile à comprendre. Le $ entre guillemets fera croire au sh/bash du système qu'il s'agit d'une variable et remplacera les paramètres de la variable. Par conséquent, il est plus recommandé d’utiliser des guillemets simples pour les tests simples quotidiens.

Le deuxième morceau de code peut imprimer normalement le contenu du paramètre transmis. La troisième ligne de code exige que lorsque vous devez transmettre du contenu avec le symbole -, vous devez d'abord donner un séparateur de liste de paramètres --. En effet, le contenu de -xxx fera penser à la commande php qu'il s'agit d'une option de commande plutôt que d'un paramètre, nous ajoutons donc un délimiteur pour transmettre le contenu du paramètre après le délimiteur dans le code tel quel.

Exécutez PHP de manière interactive

// php -a
// php > $a = 1;
// php > echo $a;
// php > 1
Copier après la connexion

Ajoutez une option -a et PHP s'exécutera de manière interactive. Nous pouvons écrire du code ou exécuter n'importe quoi directement dans l'état interactif.

Afficher phpinfo() et les modules installés

Ces deux devraient être les deux options que tout le monde utilise souvent.

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

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

// 查看模块详细信息
// php --ri swoole
Copier après la connexion

De plus, nous pouvons également utiliser la commande --ri module name pour afficher les informations détaillées d'un module d'extension spécifique. Par exemple, nous pouvons afficher ici la version de l'extension swoole et les informations de configuration associées.

查看某个文件

// 显示去除了注释和多余空白的源代码
// 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;);"
// ......这个文件里面所有的内容
Copier après la connexion

最后两个小技巧,一个是通过 -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
Copier après la connexion

推荐学习:php视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

See all articles