使用CRON作业访问URL?


80

我有一个Web应用程序,必须执行重复的任务,发送消息和警报,我已经使用脚本页面在浏览器中加载它们时执行了这些任务,即http://example.com/tasks.php,我将其包括在内在我的Web应用程序的每个页面中都使用iframe表示。

现在,我想将其更改为使用CRON作业,因为第一种方法可能会导致卡纸性能,那么我该如何制作访问http://example.com/tasks.php的CRON作业。但是,我不希望这个CRON作业创建输出文件,例如day。*!

我将应用程序托管在允许通过cPanel进行CRON作业的共享托管服务上。

Answers:


216
* * * * * wget -O - http://yoursite.com/tasks.php >/dev/null 2>&1

那应该为您工作。只是有一个wget加载页面的脚本。

使用-O -表示将Web请求的输出发送到STDOUT(标准输出)

通过添加,>/dev/null我们指示标准输出重定向到黑洞。通过添加2>&1我们指示将STDERR(错误)也发送到STDOUT,因此所有输出将发送到黑洞。(因此它将加载网站,但永远不会在任何地方写入文件)


这都是什么星号在开始时
Ashkan Mobayen Khiabani

@AshkanMobayenKhiabani它们是cron语法的一部分:nncron.ru/help/EN/working/cron-format.htm
Mitch Dempsey,

1
在Raspbian Stretch Lite下对我有用的唯一解决方案。完善!:D
that-ben

3
一个注意事项:引用URL是一个好主意,如果它包含查询,则在没有引用所有内容的情况下可能无法工作。
jackJoe19年



10

您还可以使用本地命令行php-cli:

* * * * * php /local/root/path/to/tasks.php > /dev/null

它速度更快,并减轻了Web服务器的负载。


7

我用这个命令

wget -q -O /dev/null "http://example.com/some/cron/job.php" > /dev/null 2>&1

Cron任务:

* * * * * wget -q -O /dev/null "http://example.com/some/cron/job.php" > /dev/null 2>&1

1
这需要一些解释,但效果很好。特别是如果像我一样,您的URL中有一个&符。将网址放在引号内是一种解决方案。为什么在URL前面放/ dev / null?
Gfra54

2
这可能是迟到的回复,但永远不会太迟。原因是: / dev / null是一个特殊的文件系统对象,会丢弃写入其中的所有内容。将流重定向到其中意味着隐藏输出。的2>&1个部分装置“重定向两者的输出和错误流”。
阿巴斯阿里夫

好的,这意味着wget的内容被重定向到/ dev / null(因此基本上被删除并忽略了)?谢谢
Gfra54 '16

1
是的,发送到/ dev / null的输出将被忽略。
阿巴斯阿里夫

2

您可以将其用于带有参数的网址:

lynx -dump "http://vps-managed.com/tasks.php?code=23456"

lynx默认情况下在所有系统上都可用。


-dump将页面内容转储到文件中。这可能是不希望的副作用。
Wicher Visser


1

你可以试试看:-

    wget -q -O-http://www.example.com/> / dev / null 2>&1


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.