如何在yaf中使用命令行即cli模式

 我来答
hu...5@sina.com
2016-11-24 · 贡献了超过110个回答
知道答主
回答量:110
采纳率:0%
帮助的人:11.3万
展开全部
  在yaf中用到命令行大多是为了跑Crontab或者Daemon。

  其实yaf doc已经很的很明白了。这篇只是为大家详解一下。

  首先,为了更好的与web区分(配置文件,argc、argv判断等等).重新创建一个入口文件是比较好的做法。

  $app = new \Yaf\Application(APP_PATH . "/conf/application.ini");
  $app->getDispatcher()->dispatch(new \Yaf\Request\Simple());
  

  这样入口文件就完成了。

  接下来,你需要学会yaf命令行的调用方法。来一个示例。

  

  php cli.php request_uri="/daemon/start"
  Yaf_Request_Simple的构造函数可以不接受任何参数, 在这种情况下, Yaf_Request_Simple会在命令行参数中, 寻找一个字符串参数, 如果找到, 则会把请求的request_uri置为这个字符串.

  

  request_uri=”/daemon/start” 中的路径便是Controller的路由路径.

  在例子里指向/Controller/Daemon.php 中的 startAction().

  

  Part 2.
  经过鸟哥提醒,才知道还有一种方法,通过Yaf_Application::execute(..)去实现。

  先看一下这个函数的定义:

  public void Yaf_Application::execute ( callable $entry , string $... )

  This method is typically used to run Yaf_Application in a crontab work. Make the crontab work can also use the autoloader and Bootstrap mechanism.

  第一参数需要定义一个回调函数,也可以是一个类中的某个函数。

  示例:$application->execute(“main”, $argc, $argv);

  或

  $application->execute(array(“Class”,”Method”), $argc, $argv);

  后面的参数为一个可变列表,值为你希望传入的参数。

  综上所述,我们的另外一种入口文件可以写成:

  $app = new \Yaf\Application(APP_PATH . "/conf/application.ini");
  $app->execute('callback', $avg1, $avg2 , ...);
  如果需要通过bootstrap去初始化。只需要和web一样改为:

  $app->bootstrap()->execute('callback', $avg1, $avg2 , ...);
  即可。

  

  根据你的具体情况去完成它,然后敲下回车。是不是发现天气好晴朗?

  enjoy!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
网易云信
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同... 点击进入详情页
本回答由网易云信提供
谦和且透亮灬抹香鲸j
2016-11-24 · TA获得超过3611个赞
知道小有建树答主
回答量:2141
采纳率:63%
帮助的人:664万
展开全部
 在yaf中用到命令行大多是为了跑Crontab或者Daemon。

  其实yaf doc已经很的很明白了。这篇只是为大家详解一下。

  首先,为了更好的与web区分(配置文件,argc、argv判断等等).重新创建一个入口文件是比较好的做法。

  $app = new \Yaf\Application(APP_PATH . "/conf/application.ini");
  $app->getDispatcher()->dispatch(new \Yaf\Request\Simple());
  

  这样入口文件就完成了。

  接下来,你需要学会yaf命令行的调用方法。来一个示例。

  

  php cli.php request_uri="/daemon/start"
  Yaf_Request_Simple的构造函数可以不接受任何参数, 在这种情况下, Yaf_Request_Simple会在命令行参数中, 寻找一个字符串参数, 如果找到, 则会把请求的request_uri置为这个字符串.

  

  request_uri=”/daemon/start” 中的路径便是Controller的路由路径.

  在例子里指向/Controller/Daemon.php 中的 startAction().

  

  Part 2.
  经过鸟哥提醒,才知道还有一种方法,通过Yaf_Application::execute(..)去实现。

  先看一下这个函数的定义:

  public void Yaf_Application::execute ( callable $entry , string $... )

  This method is typically used to run Yaf_Application in a crontab work. Make the crontab work can also use the autoloader and Bootstrap mechanism.

  第一参数需要定义一个回调函数,也可以是一个类中的某个函数。

  示例:$application->execute(“main”, $argc, $argv);

  或

  $application->execute(array(“Class”,”Method”), $argc, $argv);

  后面的参数为一个可变列表,值为你希望传入的参数。

  综上所述,我们的另外一种入口文件可以写成:

  $app = new \Yaf\Application(APP_PATH . "/conf/application.ini");
  $app->execute('callback', $avg1, $avg2 , ...);
  如果需要通过bootstrap去初始化。只需要和web一样改为:

  $app->bootstrap()->execute('callback', $avg1, $avg2 , ...);
  即可。

  

  根据你的具体情况去完成它,然后敲下回车。是不是发现天气好晴朗?

  enjoy!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式