0

在过去的几个小时里,我一直在努力让我的 cronJobs 工作。相信我,我用谷歌搜索了所有内容,甚至在 stackoverflow 上进行了搜索,但不知何故,我看到的代码没有按预期工作。这就是我在这里发帖的原因。

我在 SSH 中这样做:

crontab -e

然后我编辑我的 cronjob 列表并添加:

MAILTO=myemail@serv.com
*   *   *   *   *   wget -q "http://www.mywebsite.com/path/to/cronJob.php"

我的电子邮件没有收到带有 PHP 响应的回复。如果我从浏览器调用 PHP 会有一个输出,但我的电子邮件没有收到任何内容,但如果我在 cronJob 中输入错误,例如删除最后的引号,我会收到包含错误的电子邮件。

然后我按 CTRL+X ,我保存,然后我重新启动 nginx,什么也没有。

我检查了一下crontab -l,cronjobs在那里。

我想做的就是每 1 分钟从我的网站上创建一个 URL。如果我从浏览器调用 URL,它似乎可以工作。

我有 UBUNTU 和 nGinx

有什么帮助吗?

4

3 回答 3

4

使用-O -.

问题是默认情况下,wget 会将其结果保存到文件中。您希望将内容转储到标准输出。

这意味着您还必须清理所有cronJob.php.*文件的工作目录;)

所以:

* * * * * wget -q -O - "http://www.mywebsite.com/path/to/cronJob.php"
于 2012-12-22T14:23:50.553 回答
1

发现了问题。我的代码中有这个:require_once($_SERVER['DOCUMENT_ROOT'].'/something/cronJob.php')。

显然 $_SERVER['DOCUMENT_ROOT'] 是空的。

所以我使用以下方法解决了这个问题:

$path = str_replace('/something/cronJob.php','',$_SERVER['PHP_SELF']);

于 2012-12-22T15:10:50.510 回答
0

以下是找出问题所在的几个步骤:

  1. 制作脚本MAILTO=myemail@serv.com应该在该脚本中,而不是在 crontab 中
  2. 该脚本是否可以从命令行运行?
  3. 是否crontab具有相同的环境变量
于 2012-12-22T14:25:04.050 回答