京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PHP-CLI命令行模式开辟重新手到高手

2024-11-4 10:23| 发布者: db4d5a85| 查看: 116| 评论: 0

摘要: 目录PHP-cli应用场景:1.多线程应用2.定时执行php程序3.开辟桌面程序4.编写PHP的shell脚本PHP CLI的安装PHP-CLI本领要点运行PHP CLI命令行选项获取命令行参数标准输入输出PHP设置文件代码仅在CLI下利用超时时间buffe
目录

php-cli是php Command Line Interface的简称,如同它名字的意思,就是php在命令行运行的接口,区别于在Web服务器上运行的php环境(php-cgi, isapi等) 也就是说,php不但可以写前台网页,它还可以用来写后台的程序。 PHP的CLI shell脚本适用于全部的PHP优势,使创建要么支持脚本或体系以致与GUI应用程序的服务端!——注:windows和linux下都支持php_cli模式

PHP-cli应用场景:

cli模式的业务场景:定时任务,有数据同步,数据处置惩罚,多线程,进程通讯,共享内存都要利用cli

1.多线程应用

1. 利用多进程, 子进程结束以后, 内核会负责采取资源
2. 利用多进程,子进程异常退出不会导致整个进程Thread退出. 父进程另有时机重修流程
3. 一个常驻主进程, 只负责任务分发, 逻辑更清晰
4.虽然大家都普遍以为php没有多线程(curl属于模拟多线程而不是真实的),但是在php_cli模式下的php彻底的是属于多线程。这个时间php属于linux的一个保卫进程。

2.定时执行php程序

利用linux的cron方式,cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业,周期性作业

3.开辟桌面程序

你可以做您的Windows或Linux中利用PHP的图形用户界面(GUI)应用!全部你必要的是PHP的命令行接口和一包GTK。这将允许创建真正的便携式图形用户界面应用程序(呵呵,之前只是知道php可以做桌面程序,如今才知道是利用php_cli模式),而且不必要学习别的。

4.编写PHP的shell脚本

如果你不会bash shell大概Perl等的利用,但是你又必要一些脚本去执行的时间,怎么办?这个时间你完全可以利用你熟悉的php编写shell脚本,这个时间你是不是突然感觉PHP是不是太强大了!

PHP CLI的安装

PHP CLI可以从PHP官网下载并安装。在安装完成后,必要设置环境变量,以在任何地方运行php命令行。

在Windows体系下执行下列步调:

[code]
  • 下载并安装PHP
  • 将PHP的安装目录添加到环境变量PATH中
  • 打开终端(cmd.exe),输入php -v,确认已经安装并精确设置了环境变量
[/code]

在Linux或macOS体系下,可以通过命令行指令安装php:

  • Ubuntu/Debian体系: [code]sudo apt-get install php-cli[/code]
  • CentOS/RHEL体系:[code]sudo yum install php-cli[/code]
  • macOS体系(通过brew包管理器):[code]brew install php[/code]

PHP-CLI本领要点

运行PHP CLI

第一种方法是将PHP表明器的可执行文件路径添加到环境变量(PATH)中大概直接利用完备路径。然后,可以在终端中键入php命令,背面跟着要执行的PHP脚本的路径,比方:利用 # php /path/to/yourFile.php 调用PHP CLI表明器,并给脚本通报参数。这种方法要指定php表明器的路径。

第二种方法是起首运行chmod +x <要运行的脚本文件名>(UNIX/Linux环境),将该PHP文件置为可执行权限,然后在CLI脚本头部第一行参加声明(雷同于#! /usr/bin/php 或 PHP CLI 表明器位置),接着在命令行直接执行。

命令行选项

PHP CLI支持许多命令行选项,以控制脚本的行为。比方,可以利用-r选项来执行单行PHP代码,大概利用-f选项来指定要执行的PHP脚本文件。

获取命令行参数

PHP CLI带有两个特别的变量,专门用来达到这个目的:
 * 一个是 $_SERVER['argv'] 变量,它通过命令行把通报给PHP脚本的参数生存为单独的数组元素;
 * 另一是 $_SERVER['argc'] 变量,它用来生存$_SERVER['argv']数组里元素的个数。CLI可以从 $_SERVER['argv'] 和 $_SERVER['argc'] 取得参数的值和参数个数。

备注:在web页模式下必须在php.ini开启register_argc_argv设置项,设置register_argc_argv = On(默认是Off),重启服务,$_SERVER[‘argv’]才会有效果,这时间的$_SERVER[‘argv’][0] = $_SERVER[‘QUERY_STRING’]

标准输入输出

在CLI环境下,可以利用echo语句将输出打印到终端,还可以利用fgets(STDIN)从终端读取输入。

PHP设置文件

CLI和Web服务器环境下的PHP可能利用不同的设置文件。在CLI环境下,默认情况下利用的是php.ini文件,可以通过php --ini命令来查找并编辑该文件。

代码仅在CLI下利用

在PHP中,通过检查 [code]PHP_SAPI[/code] 常量来确定代码是否在CLI(命令行界面)下执行。

[code]if (PHP_SAPI === 'cli') { // 在这里编写仅在CLI环境下执行的代码 // 比方: echo "这是在命令行界面下执行的代码"; }[/code]

超时时间

在php-cli中,默认超时时间为永世不超时,但是可以通过[code]set_time_limit[/code]设置超时时间.

[code]<?php set_time_limit(1); while (1){ }[/code]

buffer缓冲

在常规web模式中,echo,var_dump,phpinfo等输出语句/函数,默认情况是先辈入php缓冲区,等缓冲区到达一定数目,才开始传输给web服务器的,但是在php-cli模式中,默认关闭buffer,直接输出,比方以下代码:

[code]<?php ob_start();//开启buffer缓冲区 php-cli下默认关闭buffer,由于web访问测试较贫困,该段代码只为了检察以及测试缓冲区的作用,在web模式下,默认开启,无需手动开启,可自行设置 for($i=0;$i<1000;$i++){ echo $i; sleep(1); if($i%10==0){ //当i为10的倍数时,将直接结束并输出缓冲区的数据,然后再次开启缓冲区 ob_end_flush(); ob_start(); } }[/code]

php cli模式下的常用命令

[code]-a 以交互式shell模式运行 -c 指定php.ini文件地点的目录 -n 指定不利用php.ini文件 -d foo[=bar] 定义一个INI实体,key为foo,value为'bar' -e 为调试和分析生成扩展信息 -f 表明和执行文件. -h 打印资助 -i 表现PHP的基本信息 -l 进行语法检查 (lint) -m 表现编译到内核的模块 -r 运行PHP代码,不必要利用标签 ..?> -B 在处置惩罚输入之前先执行PHP代码 -R 对输入的没一行作为PHP代码运行 -F Parse and execute for every input line -E Run PHP after processing all input lines -H Hide any passed arguments from external tools. -S 运行内建的web服务器. -t 指定用于内建web服务器的文档根目录 -s 输出HTML语法高亮的源码 -v 输出PHP的版本号 -w 输出去掉注释和空格的源码 -z 载入Zend扩展文件 args... 通报给要运行的脚本的参数. 当第一个参数以-开始大概是脚本是从标准输入读取的时间,利用--参数 --ini 表现PHP的设置文件名 --rf 表现关于函数的信息 --rc 表现关于类的信息 --re 表现关于扩展的信息 --rz 表现关于Zend扩展的信息 --ri 表现扩展的设置信息.[/code]

1、php -m

表现编译到内核下的模块

2、php -v

表现php的版本号

3、php --ini

表现设置文件名及设置文件路径,留意,这里表现的是php cli模式下的php.ini设置文件的地点路径。

4、php -h

表现php在cli模式下有哪些命令行命令

5、php --info

检察类/函数/扩展信息,和web服务器上php 利用phpinfo()一样

6、php --rf

表现关于函数的信息

7、php --rc

表现关于类的信息

8、php --re

表现关于扩展的信息

9、php --ri

表现扩展的设置信息

10、php --rz

表现关于zend扩展的name信息

总结

 PHP 除了可以被Apache IIS服务器调用,还可以通过cli模式运行,因为php本质上照旧C语言写的程序。cli模式的业务场景:定时任务,有数据同步,数据处置惩罚,多线程,进程通讯,共享内存都要利用cli。

到此这篇关于PHP-CLI命令行模式开辟重新手到高手的文章就介绍到这了,更多相干PHP-CLI命令行模式内容请搜索脚本之家以前的文章或继续欣赏下面的相干文章希望大家以后多多支持脚本之家!


来源:https://www.jb51.net/program/319903g8d.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-1 21:00 , Processed in 0.032557 second(s), 18 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部