等待变量在php邮件函数上执行条件

等待变量在php邮件函数上执行条件,php,email,Php,Email,我面临的情况是,我有一个php页面,它将一些变量结果发送到一个电子邮件地址,这非常好,但现在在发送电子邮件之前,我需要等待一个变量,然后执行电子邮件。变量组可以称为D组和2个变量Z组 如何在第一个变量等待时使该变量到达同一php页面 B只有当变量未到达时,它必须等待2小时。它必须发送电子邮件,此外,如果用户在2小时之前将D组重新编写并将小时数设置为0,然后再次等待Z组,则它必须等待2小时 <?php $datetime1 = new DateTime('2017-06-27 08:00:

我面临的情况是,我有一个php页面,它将一些变量结果发送到一个电子邮件地址,这非常好,但现在在发送电子邮件之前,我需要等待一个变量,然后执行电子邮件。变量组可以称为D组和2个变量Z组

如何在第一个变量等待时使该变量到达同一php页面

B只有当变量未到达时,它必须等待2小时。它必须发送电子邮件,此外,如果用户在2小时之前将D组重新编写并将小时数设置为0,然后再次等待Z组,则它必须等待2小时

<?php

$datetime1 = new DateTime('2017-06-27 08:00:00');
$datetime2 = new DateTime();
 $interval = $datetime1->diff($datetime2);
//echo $interval->format('%h');
if ($interval->format('%h') > 2 ) {
echo "yes more than 2 hours";
 } else {
 echo "not more than 2 hours";
// 12 hours are up
// give your error message
}
?>

在时间间隔上考虑得到2小时的差异,然后创建另一个if条件,比较是否存在其他变量,这就是我提出的

 <?php
$groupD = $_GET["info"];
$datetime1 = new DateTime('2017-06-27 08:00:00');
sleep(1800);  // sleep for 30 mins awaiting
$groupz = $_GET["infoxx"];
$datetime2 = new DateTime();
$interval = $datetime1->diff($datetime2);
//echo $interval->format('%h');


if ($interval->format('%h') > 2 ) {
if (!is_null($groupD) & !is_null($groupz)){
    echo "execute mail";
}
else {
    echo "wont execute";
}

} else {
 echo "not more than 2 hours";
// 12 hours are up
 // give your error message
}

我面临的问题是如何让D组等待,直到Z组到达同一个php页面,我将睡眠设置为30分钟,因为2小时是最大的等待时间,无论如何,这是一个测试

这是我的邮件脚本//(我收到的变量来自通过数组中的ajax的一些js脚本)

>php
$mail=$_GET[“info”];
//睡眠(60);
foreach($gtm形式的邮件){
$message.=$gtm;
}
$header=“From:否-reply@test.com" . “\r\n”;
$para='1web2@test.com';
$header.=“MIME版本:1.0\r\n”;
$header.=“内容类型:text/html;字符集=ISO-8859-1\r\n”;
$titulo=‘邮件列表通讯’;
$message='';
$message.='El siguiente usuario about El la compra de un paquete en booking hello


; $message.=''; $message.=“名称:”$邮件[0]。“”; $message.=“Precio Total del paquete:”$邮件[1]。“”; $message.=“名称:”$邮件[2]。“”; $message.=“Apellido:”$邮件[3]; $message.=“”; $message.=“”; if(邮件($para,$titulo,$message,$header)){ 模具(); }否则{ //呼应“假”; } /*}其他{ 呼应“假”; } */ } ?>
非常直截了当的方法是首先需要到达特定页面的文件应该写入某个tmp文件--
到达.txt

需要等待的文件是轮询(即每5秒,最多两小时),以查看文件
arrized.txt
是否为空,而不管其中的内容如何

  • 如果不为空,则:清空文件并执行操作X

  • 如果为空,则:
    执行操作Y

编辑

以下是如何写入文件:

$file = 'temp.txt';
file_put_contents($file, "Arrived");
下面是如何检查文件是否为空:

if(filesize($filename) > 0) {
    //file not empty...
    //DO ACTION X
} else {
    //file is empty...
    //DO ACTION Y
}
下面是如何每5秒进行一次投票

for ($i=0; $i <= 120; $i++) {
    if(filesize($filename) > 0) {
        //file not empty...
        //DO ACTION X
    } else {
        //file is empty...
        //DO ACTION Y
    }
    sleep(5); //wait 5 seconds
}
($i=0;$i 0)的
{
//文件不是空的。。。
//做动作X
}否则{
//文件是空的。。。
//做动作
}
睡眠(5)//等5秒钟
}

我不太熟悉如何在txt上执行此操作file@walteralexander,添加了代码位让您继续。我将编辑问题,以便您可以查看我的php邮件脚本,并帮助我将代码粘贴到何处页面在php执行时已加载get值,因为这些值位于URL中,如果您更改它们,它应该从一开始就执行代码。。。
for ($i=0; $i <= 120; $i++) {
    if(filesize($filename) > 0) {
        //file not empty...
        //DO ACTION X
    } else {
        //file is empty...
        //DO ACTION Y
    }
    sleep(5); //wait 5 seconds
}