首页 文章

具有http访问权限的codeigniter cron作业

提问于
浏览
1

对不起,如果这是一个重复的问题......我已经四处搜索并找到了类似的建议,但没有任何帮助我的确切问题 . 请原谅noob问题,CRON对我来说是个新事物 .

我有一个codeigniter脚本,它抓取另一个站点的html DOM并将其中一些存储在数据库中 . 我想定期运行这个脚本 . 这让我开始研究cron的工作 .

我的页面是myserver.com/index.php/update

我意识到我可以用curl运行一个cron作业并运行这个页面 . 如果我想要更安全一点,我可以在最后放一个字符串,如:

myserver.com/index.php/update/asdfh2784fufds

并在我的CI控制器中检查它 .

这似乎大部分都是安全的,但似乎并不像是“正确”的做事方式 .

我已经研究过从命令行运行CI,并且可以执行以下基本页面:

php index.php mycontroller

但是当我尝试做的时候:

php index.php更新

它不起作用 . 我怀疑这是因为它需要使用HTTP来抓取外部页面的DOM .

所以,我的问题:

How do I securely run a codeigniter script with a cron job that needs HTTP access?

2 回答

  • 0

    你有几个选择 . 最简单的方法是让脚本确保 $_SERVER['REMOTE_ADDR'] 在执行之前来自同一台机器 .

    另一种方法是使用 https 并使用wget或curl使用HTTP身份验证 .

  • 0

    究竟出了什么问题?它抛出了什么错误?

    我之前从命令行使用过CI没有任何问题 . 不要忘记,如果您不在脚本所在的文件夹上,则需要指定它的完整路径 .

    就像是

    php /path/to/ci_folder/index.php update
    

    您也可以在控制器上添加 .

    if ($this->input->is_cli_request())
        // run the script
    else
        // echo some message saying not allowed.
    

    只有当php脚本在命令行上运行时,才会运行所需的操作 .

    希望它有所帮助 .

相关问题