如何在Cron工作中使用curl?


12

我需要在cpanel中设置一个cron作业,该作业每周一次调用URL(在同一服务器上)。我本打算使用wget,但事实证明,这在正在使用的共享服务器上被禁用。

wget是否有替代方法?我听说可以使用curl,但是我不知道如何在cron命令中进行设置。

另外,什么是使cronjob在完成时什么也不做的命令?

任何想法,不胜感激!


1
如果可以使用,wget会怎么做?
user9517 2011年

如果禁用了wget,为什么还要允许卷曲呢?
andol 2011年

@Iain-需要处理PHP脚本
davidhyland 2011年

@Andol-很好的问题。就是这样
davidhyland 2011年

Answers:


20

而不是使用wget,curl的工作方式如下:

curl --silent http://domain.com/cron.php

它将以与wget相同的方式工作。如果您正在启动它的php文件,有什么原因不能通过命令行php解释器运行它,如下所示:

php -q /path/to/cron.php

在Web服务器请求上使用相同的命令,并且通常可以更快地工作,并且在通过Web服务器/卷曲调用时没有某些超时限制


以这种方式调用curl会将结果打印到stdout。如果您希望表现得等同于wget,并且将输出保存到基于url的文件名中,则还需要添加--remote-name标志。
andol 2011年

--silent表示没有响应或没有输出?
davidhyland 2011年

1
另外,从命令行调用php脚本不一定会产生相同的结果。除了可能进行不同的配置外,还存在以不同用户身份运行脚本的情况,这种情况并不罕见。一切取决于设置。
andol 2011年

好吧,我可以使用“ curl --silent domain.com/script.php > / dev / null 2>&1”来工作,但也可以与“ curl -o --url domain.com/script.php >一起工作/ dev / null 2>&1“有什么区别?
davidhyland 2011年

1
第一个命令将所有输出发送到/ dev / null,第二个命令将-url在运行脚本的用户的主目录中创建一个名为的文件,其中包含您的php文件的输出,其他所有输出都将发送到/ dev / null。
user9517 2011年

6

如果卷曲可用,您可以尝试类似

1 1 * * 0  /usr/bin/curl --silent http://example.come/some.php &>/dev/null

这应该使curl完全静音,因此在完成时不会收到任何电子邮件。


4
我建议也使用--show-error选项,因此它对于正常操作是无声的,但如果发生,则会产生错误。
emerino'3

6

我建议在--silent之外添加“ -m”参数,因为此参数设置了允许的最大传输时间。想象一下,您每分钟调用一次cron,脚本花费2分钟的时间-这可能会对服务器负载或其他事情产生严重影响。

1 1 * * 0  /usr/bin/curl -m 120 -s http://example.come/some.php &>/dev/null
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.