1and1 Cron没有运行mysql查询

时间:2017-04-24 20:39:47

标签: php mysql cron

我正在尝试使用我的1and1托管设置一个cron作业。如果我写一个简单的PHP代码,cron运行正常。但是当包含数据库连接并运行代码时,它就不会运行。

代码很糟糕:

    <?php mail('email@gmail.com','At4U test cron','testing cron'); ?>

<?php
    define('__ROOT__', dirname(dirname(__FILE__)));
    require_once(__ROOT__.'/AT4U/extensions/phpmailer/class.phpmailer.php');
    include(__ROOT__.'/AT4U/core/functions/general.php');
    function db_connect() {

        $db_name    = '***************';
        $db_user    = '***************';
        $host       = '***************';
        $password   = '***************';

        // Define connection as a static variable, to avoid connecting more than once 
        static $connection;

        // Try and connect to the database, if a connection has not been established yet
        if(!isset($connection)) {

            $connection = mysqli_connect($host,$db_user,$password,$db_name);
        }

        // If connection was not successful, handle the error
        if($connection === false) {
            // Handle error - notify administrator, log to a file, show an error screen, etc.
            return mysqli_connect_error(); 
        }
        return $connection;
    }

    $con = db_connect();

    $sql = "SELECT * FROM blog WHERE active = 1 ORDER BY id DESC LIMIT 1";
    $result = $con->query($sql);

    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            $latest_blog = $row['title'];
        }
    }

    email('email@gmail.com','Latest Blog',$latest_blog); 
?>

如您所见,在页面顶部,我插入了一个简单的电子邮件功能,以测试cron是否有效。我每分钟收到一封电子邮件。但是在这个简单的代码下面,我编写了数据库查询并尝试使用数据库中的信息发送电子邮件,但它不起作用。

有谁知道为什么?

1 个答案:

答案 0 :(得分:0)

(我假设程序在常规环境中运行?)

cron作业在与Web作业不同的环境中运行。 一些可能的原因:

  1. 也许数据库的东西工作正常,但是电子邮件声明无效。开头的mail(..)语句与末尾的email(..)语句不同。尝试在最后使用相同的mail(..)语句。

  2. 尝试邮寄__ROOT__常量。这是你所期望的吗?

  3. 工作目的不同。我总是在CLI和cron作业的开头使用以下行(您可能希望根据您的具体情况删除..部分。): chdir(realpath(__DIR__ . '/..'));

  4. 例如,在CLI / cron作业的情况下,在我的服务器上,以下环境变量为空:DOCUMENT_ROOT,HTTP_HOST,SERVER_SOFTWARE(也许是其他人)

  5. 您所包含的文件是否与在CLI / cron环境中运行兼容?

  6. 它甚至可能使用其他php.ini。

  7. 我希望这会有所帮助。