我想设置一个向网址发送http请求的cron作业。我该怎么做?我以前从未设置过cronjob。
答案 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)
答案 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;