1

我正在尝试运行一个基本上说的 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);,以便它在必须再次运行程序之前给它运行的服务器延迟,但没有运气。

4

2 回答 2

2

您永远不会关闭 while 循环。

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

在 while 语句期间不修改 while 条件,一旦开始,您将永远不会停止。因此挂起脚本和服务器。

于 2013-09-09T15:53:56.850 回答
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您需要的语句(带有多个elseifs)。

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 不为空且 $query10_row 为空时,我包含了第四个条件。

于 2013-09-09T15:51:39.177 回答