Ajax在某些情况下调用超时?

时间:2014-12-04 14:35:38

标签: php ajax oracle

<?php
  include_once '../includes/db_connect.php';
  fetch_evt_values($conn, 7475, 2, 16);
  function fetch_evt_values($conn, $p_frm_id, $p_evt_id, $p_usr_id) {
    $p_rec_id = 0;
    $l_rslt_msg = '';
    $l_result   = array(
      'data' => array(),
      'msg'  => '0000'
    );

    $sql  = 'BEGIN PHPEVT.EV_MOD.FETCH_EVT_VALUES(';
    //$sql .= ':c_load_id,';
    $sql .= ':c_frm_id,';
    $sql .= ':c_evt_id,';
    $sql .= ':c_rec_id,';
    $sql .= ':c_usr_id,';
    $sql .= ':c_rslt';
    $sql .= '); END;';

    if ($stmt = oci_parse($conn,$sql)) {
      $l_results = oci_new_cursor($conn);
      //oci_bind_by_name($stmt,':c_load_id',$p_load_id);
      oci_bind_by_name($stmt,':c_frm_id',$p_frm_id);
      oci_bind_by_name($stmt,':c_evt_id',$p_evt_id);
      oci_bind_by_name($stmt,':c_rec_id',$p_rec_id);
      oci_bind_by_name($stmt,':c_usr_id',$p_usr_id);
      oci_bind_by_name($stmt,':c_rslt',$l_results,-1,OCI_B_CURSOR);
      if(oci_execute($stmt)){ //Execute the prepared query.
        oci_execute($l_results);
        while($r = oci_fetch_array($l_results,OCI_ASSOC)) {
          $l_evt_values = explode('|', $r['EVENT_VALUES']);
          foreach($l_evt_values as $l_evt_value) {
            list($l_ID, $l_value) = explode('@', $l_evt_value);
            $l_values[] = array('ID' => $l_ID, 'VALUE' => $l_value);
          }
          $l_result['data'][] = array(
            'LOAD_ID' => $r['LOAD_ID'],
            'REC_ID'  => $r['REC_ID'],
            'TRAIT'   => $l_values,
            'G_MSG'   => $r['G_MSG']
          );
          $l_rslt_msg = $r['G_MSG'];
        }
      } else {
        //echo 'cannot get user';
        $l_rslt_msg = '0005'; //PHP_MEMBER.FETCH_USER return error code
      }
    } else {
      //echo 'connect fail';
      $l_rslt_msg = '0006'; //Could not connect to database.
    }
    oci_close($conn);
    echo json_encode($l_result);
  }
?>

因此,在网页上,当用户请求事件时,使用此代码进行数据库调用以检索以下格式的某些值:

“62 @ 20000 | 65 @ 15710 | 66 @ 6 | 67 @ 6 | 68 @ 0 | 69 @ 0 |”。

然后PHP将它拆分为|,拆分ID @ Value,将所有内容放入一个数组中,然后将其作为JSON返回,然后将其解析为表。后者工作得非常好。但是当这个尝试获取超过600条左右的记录时,我得到了一个500内部服务器错误,我认为这是处理该调用的PHP中的内容。

我不相信它完全是数据库,因为除了返回JSON之外没有进一步处理的3500条记录的调用通常在5秒或更短时间内完成。

为什么这段代码会在500多条记录中失败?我试过AJAX超时为0。

0 个答案:

没有答案