1

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

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

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

任何想法?

谢谢

4

4 回答 4

2

你需要提供更多关于正在发生的事情的信息,然后人们才能真正帮助你。请参阅这个有用的提问指南

一些起点:

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

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

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

这里有一些关于在 CLI 上使用 PHP 的信息。CodeIgniter有很多方法可以做到这一点。

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

于 2011-03-31T04:48:36.723 回答
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工作更受欢迎。

于 2010-11-24T23:23:34.437 回答
0

只需创建一个 cronactivator.php 文件,并将您的 cronjob 指向该文件。不需要卷曲。

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

?>
于 2009-12-07T08:51:09.523 回答