码迷,mamicode.com
首页 > Web开发 > 详细

php cli模式

时间:2017-02-26 11:06:47      阅读:653      评论:0      收藏:0      [点我收藏+]

标签:优势   gtk   不同的   cat   nbsp   man   第一个   tput   and   


PHP 的命令行模式

      从版本 4.3.0 开始,PHP 提供了一种新类型的 CLI SAPI(Server Application Programming Interface,服务端应用编程端口)支持,名为 CLI,意为 Command Line Interface,即命令行接口。顾名思义,该 CLI SAPI 模块主要用作 PHP 的开发外壳应用。CLI SAPI 和其它 CLI SAPI 模块相比有很多的不同之处,我们将在本章中详细阐述。值得一提的是,CLI 和 CGI 是不同的 SAPI,尽管它们之间有很多共同的行为。 

PHP-CLI模式的优势及使用场合

  1. 完全支持多线程

  2. 实现定时任务

  3. 开发桌面应用就是使用PHP-CLI和GTK包

  4. linux下用php编写shell脚本

PHP 的命令行模式扩展

  其实PHP的运行环境远远不止apache和cli,如aolserver, apache, apache2filter, apache2handler, caudium, cgi (until PHP 5.3), cgi-fcgi, cli, continuity, embed, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux, and webjames.可以用php_sapi_name()这个函数去检测,这里只检测Apache服务器和Windows CMD扩展,下面编写一个cli.php文件进行测试:

<?php
echo "PHP current cli mode :".php_sapi_name();

Windows cmd命令行模式运行结果:

技术分享

在Apache服务器模式下运行结果:

技术分享

PHP 的命令行自变量

  和所有的外壳应用程序一样,PHP 的二进制文件(php.exe 文件)及其运行的 PHP 脚本能够接受一系列的参数。PHP 没有限制传送给脚本程序的参数的个数(外壳程序对命令行的字符数有限制,但通常都不会超过该限制)。传递给脚本的参数可在全局变量 $argv 中获取。该数组中下标为零的成员为脚本的名称(当 PHP 代码来自标准输入获直接用 -r 参数以命令行方式运行时,该名称为“-”)。另外,全局变量 $argc 存有 $argv 数组中成员变量的个数(而非传送给脚本程序的参数的个数)。

  PHP CLI带有两个特殊的变量,专门用来达到这个目的:一个是$argv变量,它通过命令行把传递给PHP脚本的参数保存为单独的数组元素;另一个是$argc变量,它用来保存$argv数组里元素的个数。

建立一个测试文件cli.php:

<?php
echo "argv:".print_r($argv)."\r\n";
echo "argc:".$argc;

测试结果如下所示:

 技术分享

了解更多,请参考官方手册:http://php.net/manual/zh/features.commandline.php

PHP的exec()函数无返回值排查方法

exec执行某命令在命令行下没有问题,但是在PHP中就出错。这个问题99.99%与权限有关,但是exec执行的命令不会返回错误。一个技巧就是使用管道命令,假设你的exec调用如下:

exec(convert a.jpg b.jpg, $output, $return_val);  

可以更改如下:

exec(convert a.jpg b.jpg 2>&1, $output, $return_val);    
print_r($output);  

使用 2>&1, 命令就会输出shell执行时的错误到$output变量, 输出该变量即可分析。

备注: exec有3个参数,第一个是要执行的命令,第二个是参数是一个数组,数组的值是由第一个命令执行后生成的,第三个参数执行的状态,0表示成功,其他都表示失败。

在php里面一共有三个函数可以用来执行外部命令system,exec,passthru。

php cli模式

标签:优势   gtk   不同的   cat   nbsp   man   第一个   tput   and   

原文地址:http://www.cnblogs.com/tinywan/p/6443615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!