设置Cron作业来运行PHP脚本

时间:2015-09-21 19:03:00

标签: php cron

我之前已经问过这个问题,但没有一个答案对我有用。 我每晚都在午夜尝试运行一个简单的PHP脚本。我创建了一个名为" autoDelete.php"的文件。它只包含这段代码:

<?php 
  include 'my-database-connection.php';
  mysql_query("DELETE FROM meetings WHERE indexDate < NOW()");
?>

我知道这个脚本正在运行,因为如果我在浏览器中导航它,它会做它应该做的事情。

然后我设置了Cron作业(通过GoDaddy cPanel)每分钟运行一次,并使用以下命令运行脚本:

* * * * /usr/bin/php -q /home/username/public_html/autoDelete.php

但是,这不起作用。我怀疑这与&#34; / home&#34;之前的任何事情有关。在命令中。

2 个答案:

答案 0 :(得分:0)

要检查的一些事项:

1)cron jobs的默认“工作目录”是他们运行的用户ID的主目录。在这种情况下,这很可能是/home/username。这意味着如果您有任何相对路径include / require命令,它们将相对于/ home / username,NOT / home / username / public_html。确保可以访问所有必需的文件。

2)您只是假设查询调用成功。这是完全错误的事情。对外部资源(特别是DB)的调用只有一种成功的方法,并且几乎有无数种失败的方法。总是检查失败,并将成功视为一个惊喜。

将这两者结合起来(未能包含您的连接脚本,并且未能检查失败),最终得到的结果是:“没有”发生。至少尝试像

这样的东西
mysql_query(...) or die(mysql_error());
                ^^^^^^^^^^^^^^^^^^^^^^

错误消息将成为您脚本的输出,并通过电子邮件发送到控制帐户的邮箱。

答案 1 :(得分:0)

过去在尝试直接调用PHP二进制文件时,在cron作业中运行PHP脚本时遇到了问题。我的解决方案是在cron作业中使用wget,因为Apache无论如何都可以为脚本提供服务(0 0 * * * wget url / of / script.php)。 Apache已经设置了正确的PHP环境,所以不妨让它来处理这项工作。

相关问题