命令行下运行PHP

之前写过一篇《PHP实现程序值守》,在实际应用中,特别是自有服务器或者是本地执行中,还是非常不方便的,特别是对于线程的控制。
在cmd下运行php可以妥善解决上类问题。

w8o.php部分代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 设置编码
header("Content-type: text/html; charset=utf-8");
// 设置时区
date_default_timezone_set("Asia/Shanghai");
// 设置脚本执行时间
set_time_limit(0);
 
// 死循环执行程序
do{
 // 获取参数
 echo var_dump($argv);
 // 输出
 flush();
 // 请求间隔时间
 sleep(10);
}while(true);

然后使用cmd运行,以本机安装的xammp为例子运行执行

1
2
3
4
d:
cd xampp
cd php
php.exe -f D:\xampp\htdocs\w8o.php 100

即可实现可视化的程序值守,且多线程执行上也比直接采用浏览器来运行更加方便。

几个需要注意的地方:

一、CMD下执行php是不能直接获取$_GET参数的,我们需要采用$argv来获取,仅需要在需要执行的页面后加空格直接传递参数的值即可,参数允许多个,并会以数组的方式返回。

二、一般我们写php均采用UTF-8编码,而在cmd下执行输出时会产生乱码,可以在CMD下执行chcp 65001,即可切换到UTF-8编码。

三、关于中文输出,在UTF-8编码下,我实验过网上的各种方法,其实都存在缺陷,并不完美,建议大家在输出的时候还是采用英文输出比较好。或者你有完美的解决方案,也可以给我留言。