PHP foreach循环在Google Chrome中加载数千个表数据需要时间


PHP foreach loop is taking time to load thousands of table data in Google Chrome

在一个页面上,我有8500名员工以<tr><td>的形式显示在表数据中。显示的员工姓名,每个员工姓名前面都有一个复选框。当我点击复选框时,我会插入员工数据(员工姓名和员工Id)会话。

一切都很好,但问题是,当我点击"全部"复选框时,所有员工复选框都被选中,然后有一个名为"查看所选内容"的按钮。单击此按钮后,我希望所有选定的员工。当用户单击此按钮时,将打开一个新的子窗口,其中包含表单表行中选定的员工数据和数据。

我这样做,但使用的是我在单击员工复选框时创建的会话。

Mozilla Firefox上的一切都正常,但当我检查谷歌Chrome时,它就不工作了,我收到了浏览器消息KillPages或Wait。显示了Chrome的加载程序图像,但没有加载数据。

我的新子窗口页面代码就是在这里读取会话并运行for each循环,以表数据的形式打印数据。

    <?php require_once("../../includes/global.php");
    $sessionName = rq('sessionName');
    $employees = $session->read($sessionName);
    ?>
    <script type="text/javascript" src="<?php echo SITEURL_PAGE; ?  
  >configuration/js/attendancePolicy.js"></script>
    <div style="width: 100%;">
  <?php if(strpos($sessionName, 'location') !== false) {?>
  <h3 style="padding-left:10px;">View <?php echo LOCATION_DISPLAY_NAME?>s</h3>
  <?php } else {?>
  <h3 style="padding-left:10px;">View <?php echo  
  us(substr(str_replace('ot_','',$sessionName), 0, -3))?></h3>
  <?php }?>
  <?php         
         $totalEmployees = $session->check($sessionName) ? (int)count($session->read($sessionName)) : 0;        
        ?>
  <form id="updateEmployeesForm" name="updateEmployeesForm" method="post"   action="saveAttendancePolicy.php">
    <input type="hidden" name="hidAction" value="addNewPolicy_step3" />
    <input type="hidden" name="sessionName" id="sessionName" value="<?php echo $sessionName?>" />
    <?php 
$styleTab = '';
$style='';
if($totalEmployees > 30){
    $styleTab = 'border-bottom: none;';
    $style = 'overflow:auto; height: 230px !important; border-bottom: 4px solid #2C90D3;';
}
//for over time policy only
$functionSuffix = '';
if($sessionName == 'ot_locations_cb' || $sessionName == 'ot_divisions_cb' || $sessionName == 'ot_departments_cb' || $sessionName == 'ot_employees_cb') {
    $functionSuffix = 'overTimePolicy';
}
$where  = rq('where');
$employeeLoadPage = ($sessionName == 'ot_employees_cb')?'otpolicy_ajax':'';
if(stripos($sessionName, 'employee') > -1) {
    $js = "closeClildWindow('', 'employeeDiv', 'yes','".$employeeLoadPage."');";
} else if(stripos($sessionName, 'location') > -1) {
    $js = "searchPolicySpecificNew('', 'locations', 'locationDiv', {'session':'yes'},'".$functionSuffix."'); updateChildPolicyNew('".$sessionName."', 'yes','".$functionSuffix."');";
} else if(stripos($sessionName, 'division') > -1) {
    $js = "searchPolicySpecificNew('', 'divisions', 'divisionDiv', {'session':'yes'},'".$functionSuffix."'); updateChildDepartmentPolicyNew('".$sessionName."', 'locations_cb', 'yes','".$functionSuffix."');";
} else if(stripos($sessionName, 'department') > -1) {
    $js = "searchPolicySpecificNew('', 'departments', 'departmentDiv', {'session':'yes'},'".$functionSuffix."'); updateChildjobTitlePolicy('".$sessionName."', 'divisions_cb', 'locations_cb', '','".$functionSuffix."');";
}
if($where == 'viewEmp') {
    if($sessionName == 'ot_employees_cb') {
        $js="getSelectedEmployeesNew('OT');";
    } else {
        $js="getSelectedEmployeesNew();";
    }
}
?>
    <div class="totalRecord" style="float:right; width:99%;text-align:right; margin-top: 5px;">
      <label>Total Record(s) :<?php echo $totalEmployees ?></label>
    </div>
    <div style="margin: 0 2% 0 2%; width: 96%;" class="div_row">
      <table cellpadding="0" border="0" cellspacing="0" width="100%" class="bdrtable" style="border-bottom: 0px;">
        <thead>
          <tr>
            <th align="left" scope="col" colspan="5"> <input type="checkbox" name="viewCheckAllName" id="viewCheckAllName" <?php if($totalEmployees > 0) {?> checked="checked"<?php }?> class="class_parent_pop" onClick="sessionCheckBox('class_parent_pop', '<?php echo $sessionName?>_pop', 'parent', this);"   />
              Check All </th>
          </tr>
        </thead>
      </table>
    </div>
    <div style="margin-bottom: 2%; margin-left: 2%; margin-right: 2%; width:96%;<?php echo $style;?>" class="div_row">
      <table cellpadding="0" border="0" cellspacing="0" width="100%" class="bdrtable" style="<?php echo $styleTab?>">
        <?php if($totalEmployees > 0) { ?>
        <tr>
          <?php $i=1; 
                    foreach($employees as $key=>$employeeArr) {             
                ?>
          <td align="left" width="33%"><?php echo $i; ?> </td>
          <?php 
                        if($i%3 == 0 && $i != $totalEmployees) {
                            echo '</tr><tr>';
                        }
                    $i++; 
                    }           
                    if($totalEmployees%3 != 0) {                                
                        for ($x=($totalEmployees%3); $x < 3; $x++) {                                            
                            echo '<td align="left" width="33%">&nbsp;</td>';
                        }
                    }
                ?>
        </tr>
        <?php }else{ ?>
        <tr>
          <td colspan="3" align="center"><?php echo "No Data Found"; ?></td>
        </tr>
        <?php }?>
      </table>
    </div>
    <div class="clear"></div>
    <div class="div_row" style="text-align: right; width: 96%; margin:0 2%;">
      <?php if($totalEmployees > 0) {?>
      <input type="button" name="updateEmp" id="updateEmp" value="Update" class="submit" onClick="sessionCheckBoxPopupUpdate('<?php echo $sessionName?>_pop', '<?php echo $sessionName?>');<?php echo $js; ?>" />
      <?php } ?>
      <input type="button" name="cancel" id="cancel" value="Cancel" class="submit" onClick="javascript:window.close();" />
    </div>
  </form>

可能不是foreach循环速度慢,8500是需要加载的数据数量,您可能需要对结果进行分页。

为什么不使用phpmyadmin尝试相同的查询并查看所花费的时间呢。