【问题标题】:using curl to cronjob a url使用 curl 来 cronjob 一个 url
【发布时间】:2010-11-27 08:36:53
【问题描述】:

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

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

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

有什么想法吗?

谢谢

【问题讨论】:

  • 你总是可以尝试 wget 而不是 curl。

标签: php curl ssh cron mediatemple


【解决方案1】:

您需要提供更多关于正在发生的事情的信息,然后人们才能真正为您提供帮助。请看这个helpful guide to asking questions

一些起点:

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

【讨论】:

  • 我的控制器向数据库中插入了一些信息,curl 不显示错误,但只有当我在浏览器上直接运行控制器时插入才会发生。不需要身份验证。
  • curl 不显示错误;它是否显示控制器产生的输出? (如果有,那就是。如果没有,您可能应该临时添加一些以进行调试。)例如,如果您执行curl http://www.google.com/,您会看到curl 应该向您显示Web 的内容检索到的页面。
【解决方案2】:

只需创建一个 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;

?>

【讨论】:

  • 假设allow_url_fopen 处于打开状态,通常处于关闭状态。改用 PHP 的 CURL....哦,哎呀,你最终还是使用了 CURL ;)
【解决方案3】:

@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 更适合这种工作。

【讨论】:

    【解决方案4】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多