在PHP while循环期间页面不会加载和服务器崩溃

时间:2013-09-09 15:49:20

标签: php mysql while-loop

我正在尝试运行一个PHP脚本,基本上说,虽然MySQL数据库中的两个单元格是空的(t_trailerarrival和t_endsort),但是做了些什么。

我的代码如下:

<?php
// Start Session, include authentication and dBConnection script
session_start();
include 'dbcon.php';
include 'sql_actuals.php';
$current_time = date("G"); 

while($query9_row['a_trailerarrival'] == NULL && $query10_row['a_endsort'] == NULL) {
    echo "Trailer Arrival";
}

$ queryx_row ['abc']都在sql_actuals脚本中,该脚本包含在此脚本中。

出于某种原因,每次我运行这个脚本 - 我的浏览器都不会加载结果(只是加载),然后我的网站在windows azure似乎崩溃并需要几分钟才能重新启动。

有人可以告诉我的脚本是否存在明显的错误?或者指出可能存在的问题。

非常感谢提前。

仅供参考,我尝试添加一行sleep(1);,这样它就会让服务器延迟运行,然后再次运行该程序,但没有运气。

2 个答案:

答案 0 :(得分:2)

你永远不会关闭while循环。

while($query9_row['a_trailerarrival'] == NULL && $query10_row['a_endsort'] == NULL) {
    echo "Trailer Arrival";
}

如果不在while语句中修改while条件,一旦启动,就永远不会停止。因此挂起脚本和服务器。

答案 1 :(得分:1)

除了回显一行之外,你实际上并没有在while语句中做任何事情。

因此

$query9_row['a_trailerarrival'] == NULL 

$query10_row['a_endsort'] == NULL

总是正确且永不改变,它永远不会退出while循环。您需要在while循环中放置退出条件,例如:

$i=0;
while(($query9_row['a_trailerarrival'] == NULL 
        && $query10_row['a_endsort'] == NULL ) 
       || $i==10) {
    $i++;
    echo "Trailer Arrival";
}

虽然从逻辑上讲,你仍然需要运行查询数据。

**编辑** 根据您的反馈,这听起来不像是一个while循环,而是您需要的if语句(具有多个elseif s)。

if ($query9_row['a_trailerarrival'] == NULL && $query10_row['a_endsort'] == NULL){
   echo "Trailer Arrival";
} elseif ($query9_row['a_trailerarrival'] == NULL  && $query10_row['a_endsort']){
   echo "End Sort";
} elseif ($query9_row['a_trailerarrival']  && $query10_row['a_endsort']){
   echo "First Van";
}else {
  // fourth condition:
  // $query9_row['a_trailerarrival'] != NULL &&  $query10_row['a_endsort'] == NULL
}

当$ query9_row不为null且$ query10_row为null时,我包含第四个条件。