我想在CodeIgniter中不使用wget的情况下运行cron作业。我是这样使用的:
*/1 * * * * wget http://assurance.com/controller/function
它工作成功,但我不想使用wget。
有其他方法可以运行这个CodeIgniter脚本吗?
您可以尝试使用以下内容:
* * * * * /usr/bin/php /pathToTheApp/controller/function
当然,/usr/bin/php
应该是PHP二进制文件的路径,pathToTheApp
应该是CI应用程序的绝对路径。
如果您在主机上有本地shell访问权限,请将其添加到您的crontab中。
我最近需要做这件事,但找不到完整的解决方案。所以我会尝试在这里提供一个。
我使用"bash-shell"是因为我想对http的控制器进行命令行(CLI)调用(注意:我使用的是ubuntu/linux服务器。
主要有三个部分:
cron调用
外壳脚本
控制器功能
Cron:
在服务器cli中键入this以访问crontab:crontab-e
然后添加您的cron调用:* * * * * bash /path/to/script/test.sh
(注意:我在我的站点根目录中创建了一个名为cron的文件夹,所以我的路径是:
/var/www/website/cron/test.sh
外壳脚本:
在我们创建的cron文件夹中,创建一个名为"test.sh"的文件
在文件中放入:
#!/bin/bash
cd /path/to/site
/usr/bin/php index.php controller function
就是
cron设置计时器来调用文件shell从CLI 调用控制器
现在,您可以在函数中使用$this->input->is_cli_request()来增加安全性。
public function cronTest()
{
if($this->input->is_cli_request())
{
//code goes here;
}
}
希望这能帮你节省一些时间,这花了我比预期更长的时间:)