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

如何在yaf中使用命令行即cli模式,第1张

 在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!

应用程序错误解决方法:

1.检查电脑是否存在病毒,请使用百度卫士进行木马查杀。

2.系统文件损坏或丢失,盗版系统或Ghost版本系统,很容易出现该问题。建议:使用完整版或正版系统。

3.安装的软件与系统或其它软件发生冲突,找到发生冲突的软件,卸载它。如果更新下载补丁不是该软件的错误补丁,也会引起软件异常,解决办法:卸载该软件,重新下载重新安装试试。顺便检查开机启动项,把没必要启动的启动项禁止开机启动。

4.如果检查上面的都没问题,可以试试下面的方法。

打开开始菜单→运行→输入cmd→回车,在命令提示符下输入下面命令 for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车。

完成后,在输入下面

for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车。

如果怕输入错误,可以复制这两条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止(重启电脑)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11509509.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存