| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> cakephp2.x Shell 调用Controller里的action, -> 正文阅读 |
|
[JavaScript知识库]cakephp2.x Shell 调用Controller里的action, |
环境
确认cakephp的console是否可以正常工作
不加参数执行完后,执行结果如下:
创建测试Shell在 Console/Command 目录下创建?HelloShell.php
通常,shell 类使用 Shell 后缀来命名文件。在这个 shell 中创建 main() 方法。当 shell 在没有附加命令(参数)的情况下启动时调用此方法。在此之后,我们将添加一些命令,但现在让我们启动 shell。在您的应用程序目录 (app) 中,执行以下操作: (linux 需要将Console/cake文件权限改为可执行的)
执行结果:
如上所述,shell 的 main() 方法是一个特殊的方法,当没有其他命令或参数给 shell 时,它总是被调用。 HelloShell 是 AppShell 的扩展。与 AppController 一样,AppShell 提供了一个包含所有常用功能和逻辑的基本类。 AppShell 是通过创建 app/Console/Command/AppShell.php 来定义的。如果这不存在,CakePHP 将使用内置的。现在您已经在一定程度上知道了如何使用 main 方法,让我们添加另一个命令,如下所示。
创建这个文件并运行 Console / cake hello hey_there your_name,你应该看到你的名字。上例中的 hey_there 方法使用了 $this->args。它将给定命令的参数(指定的顺序有意义)保存为给定顺序的数组。你也可以在你的 shell 应用程序中使用开关和选项,它们可以通过 $this->params 或 param() 方法来引用,但这里我们只指明属性名称。 使用 main () 方法时不能引用位置参数。这是因为指定为第一个参数的参数或选项被解释为命令名称。如果要使用参数或选项,则需要使用非 main 的其他方法名称。 Shell中调用Controller
将 shell 加到 cronjob 中在 Console 目录下创建.sh文件,? 我的是 CakeShell.sh
追加cronjob 先查看现存定时任务: crontab -l 编辑定时任务: crontab -e 此时,是不可编辑状态, 输入小写 a,变为可编辑模式 将下面的命令加到最后:
ctrl + c ,退出编辑模式 crontab -l ,确认任务是否加好了 一分钟后,确认log,看任务是否正常启动,且命令是否被执行了 以上是各种测试后调通后的流程。 测试过程中遇到的各种问题小节:1. 执行 Console/cake,报错了,我的项目里边需要定义一个环境变量?PROGRAM_TOOL_ENV,该变量是表示是测试环境还是生产环境的 最后解决办法 请参考之前的文章的方法四:?Linux环境变量配置全攻略_moamao_jishuyuan的博客-CSDN博客 上边sh文件里的??source /etc/bashrc 这句命令就是解决这个问题的 2. 遇到的第二个问题就是,以?cd /your/path/to/app && Console/cake keyword check_keyword >>/home/fan.haihong/cron-keyword-20220225.log? 该命令为例,在 bash窗口手动执行的话,很正常,log也写到log文件里去了,但是, 但是 直接 将该命令加到 crontab 的任务 list 后,shell 就调不起来了,log 也写不进去 直接添加到crontab的命令如下:
后来差别的,才发现,是命令写错了,命令后边加上 2>&1 后,log就可以写进去了,修改后的命令如下:
修改后,log虽然写进去了,但是 log 里又有报错信息了,信息同 问题1 是一样的,没有检测到环境变量,可是我之前明明把环境变量加到? ? 然后,我就将? ?好了,log里虽然不报环境变量的问题了,但是shell还是没有调起来呀 最后,我试着写了个 CakeShell.sh? ,这下调通了,邮件也发了完美 虽然,我还是不知道命令直接写到 crontab 任务list 里为什么 shell 掉不起来,但是,好歹调通了,可以进行下一步了,万岁 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:25:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |