我如何使用cron作业发送HTML GET请求?

时间:2011-12-19 06:52:42

标签: http shell cron

我想设置一个向网址发送http请求的cron作业。我该怎么做?我以前从未设置过cronjob。

4 个答案:

答案 0 :(得分:5)

cron作业只是一个以常规预设间隔在后台执行的任务。

你几乎可以用任何语言编写作业的实际代码 - 它甚至可以是一个简单的php脚本或bash脚本。

PHP示例:

#!/usr/bin/php -q
<?php 

file_put_contents('output.txt', file_get_contents('http://google.com'));

接下来,安排cron作业:

10 * * * * /usr/bin/php /path/to/my/php/file > /dev/null 2>&1  

...上面的脚本将在后台每10分钟运行一次。

这是一个很好的crontab教程:http://net.tutsplus.com/tutorials/other/scheduling-tasks-with-cron-jobs/

您还可以使用cURL执行此操作,具体取决于您要使用的请求方法:

$url = 'http://www.example.com/submit.php';
// The submitted form data, encoded as query-string-style
// name-value pairs
$body = 'monkey=uncle&rhino=aunt';
$c = curl_init ($url);
curl_setopt ($c, CURLOPT_POST, true);
curl_setopt ($c, CURLOPT_POSTFIELDS, $body);
curl_setopt ($c, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec ($c);
curl_close ($c);

答案 1 :(得分:2)

为什么不能使用wget。这是另一个tutorial

答案 2 :(得分:2)

您可能希望以普通(即非特权)用户身份执行此操作,因此假设您以非root用户身份登录:

$ echo 'curl -s http://example.com/ > /dev/null' > script.sh
$ chmod +x script.sh
$ crontab -e

添加此条目以每5分钟执行一次http请求:

*/5 * * * * /path/to/your/script.sh

最好不要让script.sh在没有错误时提供任何输出,因此> /dev/null$ man 5 crontab 。否则,cron会每隔5分钟将输出通过电子邮件发送给(最可能是root用户)。

这应该足以让你入门。在这一点上,如果你花一些时间来学习一点关于cron的话会很好。你会很好地阅读cron的相应手册页:

从驱动cron作业的格式开始:

$ man cron

然后使用实际的守护进程:

{{1}}

一般建议:养成阅读您遇到的任何新unix工具的手册页的习惯,而不是立即复制和粘贴命令行片段,花一些时间阅读开关所做的事情。

答案 3 :(得分:0)

如果你使用linux

crontab -e

并添加curl命令

10 15 * * * /usr/bin/curl --silent http://test.com?some=crontab &>/dev/null

每天10:15你会发送html GET请求给http://test.com param &#34; some&#34; 和value &#34; crontab&#34;