今天要用到crontab 项目是用的yii框架 于是乎 上网查了下看看怎么用 结果得到了不少提示 也被坑的好惨, 最后还是自己研究下然后实现了, 所以写此文以便解救迷雾中的道友
Yii的文件结构里呢 有个文件夹commands 若没有的话 自己建一个 看好目录的位置 和名字不要写错
Yii框架呢 他的公外部调用的命令都是放在这个文件夹下的 它的调用时靠protected/yiic.php 来做入口文件的
配置yiic代码
画红框的地方是需要注意的
可以看到 我在代码中注释掉了AB区域这个地方使用的是相对路径 二C区域呢使用的是绝对路径为什么这么写呢,我们继续往下看
在commands文件下建一个文件 TestCommand.php代码如下
class TestCommand extends CConsoleCommand
{
public function run($args)
{
echo '测试command';
}
}
然后呢我们在linux运行下这个脚本看看可以不
[root@S1 protected]# /usr/local/php/bin/php yiic.php Test >> commands/t.log
我解释下这行代码:首先进图到项目的protected文件夹下, /usr/local/php/bin/php这一段是你的php可执行文件的位置就相当于window下的那个php安装目录的php.exe文件位置 yiic.php这个入口文件 Test就是我们刚刚建的那个命令文件 >> commands/t.log 这一段的意思是吧结果输入到这个t.log文件里
这个时候能 若你yiic.php里的文件用的是相对路径的话可能会出现包含文件不存在的错误,解决方法,第一你把那个路径输入到log文件里看下 路径对不对然后自己改对,还有一种就是用绝对路径,但是要注意绝对路径虽然省事但是一旦换了环境 可能会由于目录结构有些差异导致包含文件找不到。
在这个地方还可能抱一个错误,就是yiic.php是不允许访问的错 你可以通过修改yiic的权限解决,至于怎么把这航命令放在crontab让系统自己定时跑 自己去Google吧,欢迎指出文档错误内容,我会及时修改,一起学习研究。
若你想用相对路径来处理的话那么你可以使用dirname(__FILE__)这个函数搞定