目录

PHP Command Line Interface

概述

PHP 提供了一种 CLI SAPI - Server Application Programming Interface,服务端应用编程接口的支持,意为 CLI - Command Line Interface,即命令行接口。也是 Web 脚本语言 PHP 在系统命令行(Shell)下的另一种形式,用户可以在系统命令中使用 PHP 编写交互代码。

作用

开发外壳应用。

CLI SAPI 和其它 SAPI 模块的区别

  • CGI SAPI 不同,其输出没有任何头信息
  • CLI SAPI 强制覆盖了 php.ini 中的某些设置,因为这些设置在外壳环境下是没有意义
  • 为了减轻外壳环境下的工作,定义了如下常量
名称描述备注
STDIN一个已打开的指向 stdin 的流,调用方法:$stdin = fopen('php://stdin', 'r');
STDOUT一个已打开的指向 stdout 的流,调用方法:$stdout = fopen(‘php://stdout’, ‘w’);
STDERR一个已打开的指向 stderr 的流, 调用方法:$stderr = fopen(‘php://stderr’, ‘w’);
  • CLI SAPI 不会将当前目录改为已运行的脚本所在的目录

CLI SAPI 模块的三种运行方式

让 PHP 运行指定文件

1
2
3
$ php test.php
或者
$ php -f test.php

在命令行直接运行 PHP 代码

1
$ php -r 'print_r(get_defined_constants());'

通过标准输入 stdin 提供需要运行的 PHP 代码

PHP CLI 应用场景

多线程应用

  • 使用多进程,子进程结束以后,内核会负责回收资源
  • 使用多进程,子进程异常退出不会导致整个进程 Thread 退出,父进程还有机会重建流程
  • 一个常驻主进程,只负责任务分发,逻辑理清楚

定时执行 PHP 程序

利用 Linux 的 crontab 命令,文件路径建议使用绝对路径。

1
2
3
4
5
<?php

// The task you plan to perform

echo 'PHP is the best programming language.';
1
2
3
4
5
6
$ crontab -e
// 每分钟执行一次脚本并且输出
* * * * * /usr/bin/php /usr/local/src/test.php

// 每分钟执行一次脚本并且在后台运行
* * * * * /usr/bin/php /usr/local/src/test.php >/dev/null 2>&1

开发桌面程序

使用 PHP CLI 和 GTK 包。

Linux 下编写 PHP 的 Shell 脚本

PHP CLI 实例

PHP CLI 进阶