使用curl来cronjob一个url

时间:2009-09-10 23:58:50

标签: php curl ssh cron mediatemple

我在MediaTemple上托管的php-Codeigniter上有一个应用程序,我希望有一个cron作业运行一个控制器,支持告诉我使用CURL我尝试使用没有任何成功,例如:

curl http://mydomain.com/admin/action/get

我的控制器将一些信息插入到数据库中,curl不会显示错误,但只有当我直接在浏览器上运行控制器时才会发生插入。不需要auth。

任何想法?

感谢

4 个答案:

答案 0 :(得分:2)

在人们真正帮助您之前,您需要提供有关正在发生的事情的更多信息。请参阅此helpful guide to asking questions

一些起点:

  1. 从命令行运行该命令会发生什么?
  2. 当您在Web浏览器中转到控制器URL时会发生什么?
  3. 你的“没有成功”到底是什么?你在寻找什么样的成功迹象,你在观察什么?
  4. 您的控制器是否需要身份验证?如果是这样,您需要告诉curl如何提供它。如果没有,请注意您允许互联网上的任何人启动此过程,这可能会导致拒绝服务攻击或其他安全问题。

答案 1 :(得分:1)

或者......你可以编写一个旨在在CLI上运行的PHP脚本,并将cron任务直接分配给php文件:

php -f /path/to/my/file.php

Heres some information在CLI上使用PHP。 CodeIgniter有ways to do this

也就是说,有一种方法可以确定请求是否随处可见。 (除了保存请求的输出)CodeIgniter配备了出色的记录方法。您可以将 application / config / config.php 中的$config['log_threshold']设置为3。在浏览器中运行请求,然后在CLI中运行一次。然后在 application / logs 文件夹中查找当天的日志文件。在文件中查找您要求的网址。它应该有两个记录的地方。如果少于您在日志文件中发出的请求数,那么您就知道CURL出了问题。否则,您知道应用程序出了问题。

答案 2 :(得分:0)

只需制作一个cronactivator.php文件,然后将您的cronjob指向此文件即可。不需要CURL。

<?php 
//for php4 use fopen
$html_data = file_get_contents('http://www.yoursite.com/framework/controller/action', 'r');
echo "DONE!";
exit;

?>

答案 3 :(得分:0)

@seth - 我不是在Linux机器上,所以不能真正测试它,但你的问题是 curl本身没有安装 curl需要某些特定的开关工作

如果您仍然希望它能够正常工作,首先通过服务器的SSH(在Windows上使用Putty)使其工作,或者您可以编写一个脚本来测试它;

<?php
    $code=system('curl --help');
    echo '<br><br> Exit Code: '.$code;
?>

如果它写的任何其他错误代码不是0,那么你就会遇到CURL问题。


另一方面,您可以使用wget代替。它在Linux上比支持CURL(afaik)更受支持。虽然我是CURL的忠实粉丝,但wget更适合这种工作。