使用Mysql PHP进行Crone作业设置

时间:2016-08-02 08:58:22

标签: php cron yii2

我有一张名为“车辆主人”的下表

vhcl_no
department
vhcl_type
vhcl_make
fuel_type
chassis_no
engine_no
manufacture_on
cubic_capacity
rcbook_no
rcbook_valid_till
insurance_no
insurance_company
insurance_from
insurance_to
vhcl_puc
puc_validity
remarks
created_by
updated_by
created_on

我想将提醒邮件发送给

的车辆用户
           1) RC book vailidity before 1 month    
           2) Insurance vailidity before 1 month
           3) PUC vailidity before 1 week

如何使用同一个表创建一个可以满足3个以上条件的cron作业?

我尝试了一些事情,但坚持要做的事情

$query1 = mysqli_query($con1, "select * from vehicle_master");

$count = mysqli_num_rows($query1);

if ($count >= 1)
{
    while($row = mysqli_fetch_array($query1))
        {

                $vhcl_no           =    $row['vhcl_no'];
                $department        =    $row['department'];
                $vhcl_type         =    $row['vhcl_type'];
                $vhcl_make         =    $row['vhcl_make'];
                $fuel_type         =    $row['fuel_type'];
                $chassis_no        =    $row['chassis_no'];
                $engine_no         =    $row['engine_no'];
                $manufacture_on    =    $row['manufacture_on'];
                $cubic_capacity    =    $row['cubic_capacity'];
                $rcbook_no         =    $row['rcbook_no'];
                $rcbook_valid_till =    $row['rcbook_valid_till'];
                $insurance_no      =    $row['insurance_no'];
                $insurance_company =    $row['insurance_company'];
                $insurance_from    =    $row['insurance_from'];
                $insurance_to      =    $row['insurance_to'];
                $vhcl_puc          =    $row['vhcl_puc'];
                $puc_validity      =    $row['puc_validity'];
                $remarks           =    $row['remarks'];
                $created_by        =    $row['created_by'];
                $updated_by        =    $row['updated_by'];
                $created_on        =    $row['created_on'];

            $search_output .= "<ul>
                <li>
                    <h4>".$vhcl_no."</h4>
                    <p><b>Department: ".$department."</b></p>
                    <p>Vehicle Type : ".$vhcl_type."</p>
                    <p>Vehicle Make: ".$vhcl_make."</p>
                    <p>Engine No: ".$engine_no."</p>
                    <p>Manufacture On: ".$manufacture_on."</p>
                    <p>Rcbook No: ".$rcbook_no."</p>
                    <p>Rcbook Valid Till: ".$rcbook_valid_till."</p>        
                    <p>Insurance No: ".$insurance_no."</p>    
                    <p>Insurance Company: ".$insurance_company."</p>
                    <p>Insurance From: ".$insurance_from."</p>    
                    <p>Insurance To: ".$insurance_to."</p>
                    <p>Vehicle PUC: ".$vhcl_puc."</p>    
                    <p>Vehicle PUC Validity: ".$puc_validity."</p>
                    <p>Vehicle Remaorks: ".$remarks."</p>      
                </li><br/>                  
            </ul>";    

          //  var_dump($search_output); die;

                $sendMail = true;



        }
}

我想开发一个查询,我可以一起执行所有3个condtiond来发送提醒邮件

2 个答案:

答案 0 :(得分:1)

使用条件来比较日期, Compare given date with today

这是crontab参考: http://www.adminschoice.com/crontab-quick-reference

如果您的字段是时间戳, 您可能想要的SQL可能是:

$monthFromNow = strtotime("+1 month");
$sql = "select * from vehicle_master where rcbook_valid_till < " . time() - ($monthFromNow) . " and insurance_to < " . time() - ($monthFromNow) . ";";

使用[condition and condition and ..]

在查询中添加所需的字段

http://php.net/manual/en/function.date.php https://en.wikipedia.org/wiki/Unix_time

答案 1 :(得分:1)

对不起,这不是您要求的cronjob,但这是SQL查询所需要的。 Sql查询为此答案。

1) RC book vailidity before 1 month    
2) Insurance vailidity before 1 month
3) PUC vailidity before 1 week

将此SQL查询放在mysqli_query($con1, "HERE");

SELECT * FROM vehicle_master
WHERE (rcbook_valid_till) <= (NOW() + INTERVAL 1 MONTH) AND (rcbook_valid_till) >= (NOW()) OR 
WHERE (insurance_to) <= (NOW() + INTERVAL 1 MONTH) AND (insurance_to) >=(NOW()) OR
WHERE (puc_validity) <= (NOW() + INTERVAL 1 WEEK) AND (puc_validity) >=(NOW())

它将获得所有数据,以便那些在您的时间限制内具有他们的真实性的人。即使遇到其中一个。