Php脚本循环5次,然后死掉

Php脚本循环5次,然后死掉,php,Php,如何让php文件的这一部分(查询我的数据库)运行5次,然后在第5次尝试后如果条件仍然为false,则停止运行 以下是我要循环的文件部分: if ((isset($_POST['_Commandeviapaypal'])) && ($PaypalStatus != "Completed")) { sleep(60); $PaypalPayment = "SELECT payment_amt FROM al_paypal WHERE ((item_number='" .$No

如何让php文件的这一部分(查询我的数据库)运行5次,然后在第5次尝试后如果条件仍然为false,则停止运行

以下是我要循环的文件部分:

 if ((isset($_POST['_Commandeviapaypal'])) && ($PaypalStatus != "Completed"))
 {
 sleep(60);
 $PaypalPayment = "SELECT payment_amt FROM al_paypal WHERE ((item_number='" .$No . "') || (item_number='" .$NoGift . "'))   ";
 $query1 = mysql_query($PaypalPayment);
 $row1 = mysql_fetch_row($query1);
 $PaypalPayment = $row1[0];
 $PaypalConfirmation = "SELECT txn_id FROM al_paypal WHERE ((item_number='" .$No . "') || (item_number='" .$NoGift . "')) ";
 $query2 = mysql_query($PaypalConfirmation);
 $row2 = mysql_fetch_row($query2);
 $PaypalConfirmation = $row2[0];
 $PaypalStatus = "SELECT payment_status FROM al_paypal WHERE ((item_number='" .$No . "') ||  (item_number='" .$NoGift . "')) ";
 $query3 = mysql_query($PaypalStatus);
 $row3 = mysql_fetch_row($query3);
 $PaypalStatus = $row3[0]; 
 } 

感谢您的帮助。

添加一个变量,记录您迄今为止的尝试次数,并在达到5次时停止循环

if ((isset($_POST['_Commandeviapaypal'])) && ($PaypalStatus != "Completed"))
{
    $attempts = 0;
    while ($attempts < 5)
    {
        // other code
        if (/* successful */)
        {
            break;
        }

        $attempts = $attemps + 1;
    }
}
if((isset($\u POST['''u Commandeviapaypal'))和($PaypalStatus!=“已完成”))
{
$truments=0;
而($尝试次数<5次)
{
//其他代码
如果(/*成功*/)
{
打破
}
$attemps=$attemps+1;
}
}

您可以使用for循环迭代5次,循环中还有一个附加条件,如下所示:

for ($i = 0; $i < 5 && (CONDITION); ++$i) {
    //Code here
}
用于($i=0;$i<5&&(条件);+$i){
//代码在这里
}

为什么要这样做?为什么有3个请求要获取数据库中的同一行?您意识到,像apache这样的大多数web服务器都有一个超时,通常默认为5分钟,并且每次循环迭代都会休眠60秒:5*60秒=5分钟。。。巧合我认为不要对循环使用
。如果查询成功,请设置一个表示查询成功的变量,然后使用
break
退出循环。这不是同一行。相同的表和相同的条件是同一行。但有3个不同的列。循环,而不是条件。它应该是一个
,而
。是的,我刚刚意识到。现在应该好多了。