2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > php-cli模式学习(PHP命令行模式)

php-cli模式学习(PHP命令行模式)

时间:2023-08-09 06:06:44

相关推荐

php-cli模式学习(PHP命令行模式)

后端开发|php教程

php-cli模式学习(PHP命令行模式)

后端开发-php教程

php-cli模式学习(PHP命令行模式)

2048 源码分析,vscode终端快捷键大全,ubuntu 安装fsl,tomcat 默认并发数,爬虫与php,php服务器用什么系统,政和效果好的seo哪家好lzw

之前知道php?cli模式是一种类似shell命令式的执行php程序,不过一直以为这个是一种落后的方式,应该没有什么意义,因为从没有遇到过使用这个cli模式编程的。不过今天遇到了使用cli模式的应用。

php_cli模式简介

菜谱网 java 源码,vscode终端扩展,ubuntu盈利,tomcat里webapp,sqlite 查找不同列,手机端的日历插件,web前端简单好用的框架,尼姆博弈爬虫程序,php close,庆阳网络seo,相似4a98网站,java 网页源代码,html5左右分栏模板lzw

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

PHP-cli应用场景:

1.多线程应用

访客手机号码抓取源码,vscode语言后缀,ubuntu的引导文件没有了,tomcat集群缺陷,sqlite 商用免费吗,mega插件,前端最火的移动框架,京东商品价格爬虫,php5.6 下载,网页seo代码,汽车销售网站设计,手机端登录微信网页模板下载,注册页面html模板下载,od能否打开易语言编写的程序lzw

这方面的好处,引用鸟哥的话:

优点: 1. 使用多进程, 子进程结束以后, 内核会负责回收资源

2. 使用多进程,子进程异常退出不会导致整个进程Thread退出. 父进程还有机会重建流程.

3. 一个常驻主进程, 只负责任务分发, 逻辑更清楚.

php的多线程?没错就是php多线程应用,虽然大家都普遍认为php没有多线程(curl属于模拟多线程而不是真实的),但是在php_cli模式下的php彻底的是属于多线程。这个时候php属于linux的一个守护进程。 在本人之前写过的《PHP多线程批量采集下载美女图片(续)》的时候在采集程序里虽然使用curl来模拟多线程,但是在浏览器执行的时候也是会遇到执行超时或内存abort而导致程序中断,(要尝试几次才可以彻底成功),但是如果在php-cli模式下执行,你就会发现这个程序执行的很快,php多线程执行的优势被彻底表现出来了.

备注:这种多线程方式不是很成熟,不适合大规模的生成应用,偶尔使用还是可以的

2.定时执行php程序

之前本人总结关于《PHP定时执行计划任务》的三种方式,利用有一张就是利用linux的cron方式,那么这个方式是如何定时执行php程序?请看下文

3.开发桌面程序

你可以做您的Windows或Linux中使用PHP的图形用户界面(GUI)应用!所有你需要的是PHP的命令行接口和一包GTK。这将允许建立真正的便携式图形用户界面应用程序(呵呵,之前只是知道php可以做桌面程序,现在才知道是使用php_cli模式),并且不需要学习别的。

4.编写PHP的shell脚本

如果你不会bash shell或者Perl等的使用,但是你又需要一些脚本去执行的时候,怎么办?这个时候你完全可以使用你熟悉的php编写shell脚本,这个时候你是不是突然感觉PHP是不是太强大了!??真正做到一种语言,到处开发!

PHP_CLI使用方法

win下面的执行方法:

假设php.exe 在D:\xampp\php在dos命令在可以这个执行:

1 D:\xampp\php\php.exe D:\xampp\htdocs\test.php

就可以执行test.php这个文件了 。这里推荐win平台下xampp集成环境,真正比wamp强大N倍,这个集成包可以直接进入dos模式。

linux下php_cli使用

首先找到你安装php的路径,以我为例:

image

php安装在路径/usr/local/php/bin/php下

1 /usr/local/php/bin/php /usr/local/apache/htdocs/a.php

就可以执行a。php文件

PHP_CLI编程需知

如何检测环境支持php_cli模式?

1 <?php

2 //方法1

3 if (PHP_SAPI === ‘cli’)

4 {

5 // …

6 }

7 //方法2

8 if (php_sapi_name() === ‘cli’)

9 {

10 // …

11 }

PHP_ClI如何接收参数?

默认情况下/usr/local/php/bin/php接收参数是$argv,这个变量是固定的!在php文件中var_dump($argv);

得到下面结果:

image

可以写个简单的处理函数把这个方式转化为大家常用的GET/post的参数模式。

简单代码:

1 <?php

2

3 function parseArgs($argv){

4 array_shift($argv);

5 $out = array();

6 foreach ($argv as $arg){

7 if (substr($arg,0,2) == ‘–‘){

8$eqPos = strpos($arg,’=’);

9if ($eqPos === false){

10 $key = substr($arg,2);

11 $out[$key] = isset($out[$key]) ? $out[$key] : true;

12} else {

13 $key = substr($arg,2,$eqPos-2);

14 $out[$key] = substr($arg,$eqPos+1);

15}

16 } else if (substr($arg,0,1) == ‘-‘){

17if (substr($arg,2,1) == ‘=’){

18 $key = substr($arg,1,1);

19 $out[$key] = substr($arg,3);

20} else {

21 $chars = str_split(substr($arg,1));

22 foreach ($chars as $char){

23 $key = $char;

24 $out[$key] = isset($out[$key]) ? $out[$key] : true;

25 }

26}

27 } else {

28$out[] = $arg;

29 }

30 }

31 return $out;

32 }

33 var_dump($argv);

34 var_dump(parseArgs($argv));exit;

执行结果:

image

当然实现的方法不止一个,大家可以尝试其他方法实现!

例外关于php的cli还有很多参数可以加入:具体可以参考:/manual/en/mandline.php

关于定时执行

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业,周期性作业,比如备份数据 打开/etc/crontab,添加:

/usr/bin/php -f /data/htdocs/test.php

关于corntab的详细使用参考51cto专题:Linux计划任务??cron服务

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。