1

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

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

我的页面位于 myserver.com/index.php/update

我意识到我可以使用 curl 运行 cron 作业并运行此页面。如果我想更安全一点,我可以在末尾添加一个字符串,例如:

myserver.com/index.php/update/asdfh2784fufds

并在我的 CI 控制器中检查。

这似乎是最安全的,但似乎不是做事的“正确”方式。

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

php index.php 我的控制器

但是当我尝试这样做时:

php index.php 更新

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

所以,我的问题:

如何使用需要 HTTP 访问的 cron 作业安全地运行 codeigniter 脚本?

4

2 回答 2

1

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

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

于 2012-04-05T17:41:11.127 回答
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 脚本在命令行上运行时,这将运行所需的内容。

希望它有所帮助。

于 2012-04-05T19:26:24.697 回答