PHP 脚本通过 Cronjob 在一台服务器上运行,但不在类似服务器上运行

标签 php mysql

我通过一台服务器 (VPS WHM) 上的 cronjob 运行此脚本,并将所有内容复制到具有相同类型 VPS 和 WHM 的另一台主机。该脚本未在新服务器上运行,并且/或未发送电子邮件。我试图与提供商一起解决问题,但他们不知所措。我的问题是什么设置可能会导致这样的问题?我似乎搞乱了服务器上的所有设置,但几乎没有结果。任何有助于追踪此问题的信息,请告诉我,我将编辑该问题。如果您的猜测也有帮助,我只是在寻找对这个问题的新视角。

更多信息:

Apache 版本 2.2.27 PHP 版本 5.4.31 MySQL版本5.5.40-cll

日志中没有错误

Cron 是:10 4 * * * php/home/xxxxx/public_html/alert.php

我也尝试过:10 4 * * */home/xxxxx/public_html/alert.php

    #!/usr/bin/php
<?php

$db_host = "localhost"; 
$db_username = "xxxx"; 
$db_pass = "xxxx"; 
$db_name = "xxxxxx"; 
mysql_connect("$db_host","$db_username","$db_pass") or die(mysql_error()); 
mysql_select_db("$db_name") or die ("no database");

$headers = "Bcc: xxxxx@xxxx.com";

$tierasql =  "SELECT date,phonenumber,email, SUM(dataplan) AS currentplantiera, SUM(datamb) AS value_sumtiera FROM maindata2 WHERE dataplan BETWEEN 2 and 50 and dataplan != '20' GROUP BY email";


$resulttiera = mysql_query($tierasql);
while ($rowtiera = mysql_fetch_assoc($resulttiera)){
if ($resulttiera){
  $rowtiera = mysql_fetch_assoc($resulttiera);
  $plantiera = $rowtiera['currentplantiera'] ;
  $date = $rowtiera['date'] ;
  $inventorytiera = ROUND ($rowtiera["value_sumtiera"],2) ;
  $recipienttiera = $rowtiera['email'];
  if ($inventorytiera > (.75 * $plantiera)){
    $msgtiera = "Xxxxxxxxx Data Usage Alert:

This alert is being provided to you because your lines in Tier A have exceeded 75% of your Xxxxxxxxx Service Plan. 

As of $date, your current data usage is $inventorytiera MB and you have a data allotment of $plantiera MB of shared data. 

Please note that you may experience overage charges if your total data usage exceeds the net total usage of all data in the same sharing tier until your usage is reset on your next billing cycle.  

One upward rate plan adjustment is allowed per billing cycle, please visit http://xxxxxxxxx.com/rate-plan-change for more details.

Please refer to Xxxxxxxxx.com/data to review your data usage.";
    mail($recipienttiera,"xxxxx@xxxx.com", "Xxxxxxxxx Data Usage Alert", $msgtiera, $headers);
  }
}
else {
  $msg = "An error occurred: " . mysql_error();
  mail($recipienttiera,"xxxxx@xxxx.com", "Alert from Xxxxxxxxx error", $msgtiera, $headers);

}
}

$tierbsql =  "SELECT date,phonenumber,email, SUM(dataplan) AS currentplantierb, SUM(datamb) AS value_sumtierb FROM maindata2 WHERE dataplan BETWEEN 500 and 8000 GROUP BY email";


$resulttierb = mysql_query($tierbsql);
while ($rowtierb = mysql_fetch_assoc($resulttierb)){
if ($resulttierb){
  $rowtierb = mysql_fetch_assoc($resulttierb);
  $plantierb = $rowtierb['currentplantierb'] ;
  $date = $rowtierb['date'] ;
  $inventorytierb = ROUND ($rowtierb["value_sumtierb"],2) ;
  $recipienttierb = $rowtierb['email'];
  if ($inventorytierb > (.75 * $plantierb)){
    $msgtierb = "Xxxxxxxxx Data Usage Alert:

This alert is being provided to you because your lines in Tier B have exceeded 75% of your Xxxxxxxxx Service Plan. 

As of $date, your current data usage is $inventorytierb MB and you have a data allotment of $plantierb MB of shared data.  

Please note that you may experience overage charges if your total data usage exceeds the net total usage of all data in the same sharing tier until your usage is reset on your next billing cycle.  

One upward rate plan adjustment is allowed per billing cycle, please visit http://xxxxxxxxx.com/rate-plan-change for more details.

Please refer to Xxxxxxxxx.com/data to review your data usage.";
    mail($recipienttierb,"xxxxx@xxxx.com", "Xxxxxxxxx Data Usage Alert", $msgtierb, $headers);
  }
}
else {
  $msg = "An error occurred: " . mysql_error();
  mail($recipienttierb,"xxxxx@xxxx.com", "Alert from Xxxxxxxxx error", $msg, $headers);

}
}

$tiercsql =  "SELECT date,phonenumber,email, SUM(dataplan) AS currentplantierc, SUM(datamb) AS value_sumtierc FROM maindata2 WHERE dataplan BETWEEN 10000 and 100000 GROUP BY email";


$resulttierc = mysql_query($tiercsql);
while ($rowtierc = mysql_fetch_assoc($resulttierc)){
if ($resulttierc){
  $rowtierc = mysql_fetch_assoc($resulttierc);
  $plantierc = $rowtierc['currentplantierc'] ;
  $date = $rowtierc['date'] ;
  $inventorytierc = ROUND ($rowtierc["value_sumtierc"],2) ;
  $recipienttierc = $rowtierc['email'];
  if ($inventorytierc > (.75 * $plantierc)){
    $msgtierc = "Xxxxxxxxx Data Usage Alert:

This alert is being provided to you because your lines in Tier B have exceeded 75% of your Xxxxxxxxx Service Plan. 

As of $date, your current data usage is $inventorytierc MB and you have a data allotment of $plantierc MB of shared data.  

Please note that you may experience overage charges if your total data usage exceeds the net total usage of all data in the same sharing tier until your usage is reset on your next billing cycle.  

One upward rate plan adjustment is allowed per billing cycle, please visit http://xxxxxxxxx.com/rate-plan-change for more details.

Please refer to Xxxxxxxxx.com/data to review your data usage.";
    mail($recipienttierc,"xxxxx@xxxx.com", "Xxxxxxxxx Data Usage Alert", $msgtierc, $headers);
  }
}
else {
  $msg = "An error occurred: " . mysql_error();
  mail($recipienttierc,"xxxxx@xxxx.com", "Alert from Xxxxxxxxx error", $msg, $headers);

}
}


$sql =  "SELECT date,phonenumber,email, dataplan AS currentplan, SUM(datamb) AS value_sum FROM maindata2 GROUP BY phonenumber, dataplan";


$result = mysql_query($sql);
if ($result) {
    while ($row = mysql_fetch_assoc($result)){
        $plan = $row['currentplan'] ;
            $date = $row['date'] ;
            $inventory = ROUND ($row["value_sum"],2) ;
            $recipient = $row['email'];
            $line = $row['phonenumber'];
            if ($inventory > (.75 * $plan)) {
    $msg = "Xxxxxxxxx Single Line Usage Alert:

This alert is being provided to you because your line $line has exceeded 75% of it's Xxxxxxxxx Service Plan.   

As of $date, your current data usage is $inventory MB of your $plan MB data plan. 

Please note that you may experience overage charges if your total data usage exceeds the net total usage of all data in the same sharing tier until your usage is reset on your next billing cycle.  

One upward rate plan adjustment is allowed per billing cycle, please visit http://xxxxxxxxx.com/rate-plan-change for more details.

Please refer to Xxxxxxxxx.com/data to review your data usage.";
    mail($recipient,"xxxxx@xxxx.com", "Alert from Xxxxxxxxx", $msg, $headers);
  }
}
}
else {
  $msg = "An error occurred: " . mysql_error();
  mail($recipient,"xxxxx@xxxx.com", "Alert from Xxxxxxxxx error", $msg, $headers);

}




        ?>

最佳答案

您检查过新服务器上的 php-cli 错误日志吗?运行的时候可能会出错。如果日志中没有错误,则它可能根本无法运行。尝试使用 php 命令手动触发作业,看看是否成功,然后将其添加到 cron 中并检查错误日志。

关于PHP 脚本通过 Cronjob 在一台服务器上运行,但不在类似服务器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26758942/

相关文章:

phpExcel:getCalculatedValue() 返回#VALUE

php - 如何通过laravel从数据库表中删除多行?

php - 内容在 php 中的 fpdf 单元格中重叠

php - 由于列不是直接连接的,如何用名称替换 ID 号? (PHP/MySQL)

mysql - 社交网络应用程序的数据库设计是否正确,或者我应该做一些修改?

mysql - 如何通过比较更新mysql cols

php - 在 PHP 中为通知设置 FCM channel ID

php - Laravel 4 在数据库中存储索引而不是值

php - 如何远程连接WordPress数据库?

mysql - 连接不同表中的不同列 (SQL)