我在 MediaTemple 上托管的 php-Codeigniter 上有一个应用程序,我想要一个运行控制器的 cron 作业,支持人员告诉我使用我尝试使用但没有成功的 CURL,例如:
curl http://mydomain.com/admin/action/get
我的控制器向数据库中插入了一些信息,curl 不会显示错误,但只有当我直接在浏览器上运行控制器时才会发生插入。不需要身份验证。
任何想法?
谢谢
我在 MediaTemple 上托管的 php-Codeigniter 上有一个应用程序,我想要一个运行控制器的 cron 作业,支持人员告诉我使用我尝试使用但没有成功的 CURL,例如:
curl http://mydomain.com/admin/action/get
我的控制器向数据库中插入了一些信息,curl 不会显示错误,但只有当我直接在浏览器上运行控制器时才会发生插入。不需要身份验证。
任何想法?
谢谢
你需要提供更多关于正在发生的事情的信息,然后人们才能真正帮助你。请参阅这个有用的提问指南。
一些起点:
curl
如何提供它。如果没有,请注意您允许 Internet 上的任何人执行此过程,这可能会导致拒绝服务攻击或其他安全问题。或者...您可以编写一个旨在在 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 有问题。否则,您知道该应用程序有问题。
@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
工作更受欢迎。
只需创建一个 cronactivator.php 文件,并将您的 cronjob 指向该文件。不需要卷曲。
<?php
//for php4 use fopen
$html_data = file_get_contents('http://www.yoursite.com/framework/controller/action', 'r');
echo "DONE!";
exit;
?>