今天在改进老项目的时候遇到了需要使用ThinkPHP的CLI模式,也就是命令行模式去运行PHP代码。
普通的PHP使用命令行模式这个就不用我多说了~
其实ThinkPHP5.1关于这个命令行模式官方手册也有介绍。当然,还是记录一下,以防后面忘记了又要翻文档。
当前TP5.1版本是5.1.38,关于查看TP版本,在CMD下输入php think version即可查看
如果输入PHP命令,CMD提示 PHP 不是内部或外部命令也不是可运行的程序,这时候需要设置一下PHP的环境变量,例如我当前的环境是PHPStudy 8.0 和 Windows 10
首先PHP的安装目录下有PHP.EXE文件
那么就将当前目录地址
D:\soft\phpstudy\Extensions\php\php7.3.4nts
写入到环境变量中去,桌面上右键-此电脑-属性-高级系统设置-环境变量-找到path-编辑-将上面的目录写入。
OK,重启一下CMD,就可以愉快的操作PHP了。
接下来是ThinkPHP的操作
首先在application目录下创建common目录,common目录下创建command目录,在command目录下创建一个test.php(注意大小写!)
test.php的内容如下
<?php
/**
* Created by 九城.
* Author: 九城
* QQ : 940993208
*
* Date: 2019/9/18
* Time: 14:34
*/
namespace app\common\command;
use think\console\Command;
use think\console\Input;
use think\console\Output;
class test extends Command
{
protected function configure()
{
$this->setName('test')
->setDescription('test tp5 cli mode');
}
protected function execute(Input $input, Output $output)
{
$output->writeln("hello test!");
}
}
然后在command.php文件写入当前test的命名空间
<?php
return [
'test' => 'app\common\command\test',
];
接着在cmd下输入命令
php think
接着输入
php think test
至此就可以愉快的使用命令行模式去使用ThinkPHP5.1
业务代码可以写在execute方法里。例如循环的去读取Redis,循环生成等,不过这种场景最好还是Swoole或者Workman来处理比较好。