作者:勿忘 | 来源:互联网 | 2023-07-10 13:18
[TOC]CLI模式与Web模式的区别:CLI其输出没有任何头(Header)信息。出错时输出纯文本的错误信息(非HTML格式)。所有来自print和echo的输出将被立即写到输出
CLI 模式与 Web 模式的区别:
- CLI 其输出没有任何头(Header)信息。
- 出错时输出纯文本的错误信息(非 HTML 格式)。
- 所有来自 print 和 echo 的输出将被立即写到输出端。而不作任何缓冲操作。
- 最大运行时间(
max_execution_time
)被设置为无限值。
$argc
与 $argv
两个变量总是存在。并且携带了参数个数与实际的参数数组值。
- CLI SAPI 不会将当前目录改为已运行的脚本所在的目录。
- CLI 模式提供了几个专用常量:STDIN、STDOUT、STDERR。
如何使用?
public下面放一个cli.php
toArray();
} else {
$cOnfig= $app->getConfig()->toArray();
}
(new App($config));
$app->bootstrap();
if (!isset($argv[1])) {
exit("Please enter the route to execute. Example: the php cli.php Index/Index!\n");
}
$routeArr = explode('/', $argv[1]);
if (count($routeArr) != 2) {
exit("Please enter the route to execute. Example: the php cli.php Index/Index!\n");
}
$cOntrollerName= $routeArr[0];
$actiOnName= $routeArr[1];
// 删除路由参数。
unset($argv[0], $argv[1]);
$params = [];
if (isset($argv[2])) {
parse_str($argv[2], $params);
}
$request = new \Yaf_Request_Simple('CLI', 'Cli', $controllerName, $actionName, $params);
\Yaf_Application::app()->getDispatcher()->returnResponse(true)->dispatch($request);
控制器位置
![技术图片](https://img8.php1.cn/3cdc5/156ea/807/113647b595af29e2.jpeg)
判断是否是cli模式
end();
if (!App::isCli()) { // 非 CLI 模式运行则报错。
Core::exception(STATUS_SERVER_ERROR, '不是 Cli 模式');
}
}
}
具体的控制器
![技术图片](https://img8.php1.cn/3cdc5/156ea/807/3a9cb95ea2d1a04a.jpeg)
操作
/usr/local/php7.2/bin/php cli.php Sms/send
yaf中使用Cli模式,也就是定时器