제목 | php Excel 업로드시 속도 문제 ? | ||
---|---|---|---|
글쓴이 | 람이 | 작성시각 | 2016/09/19 17:29:08 |
|
|||
php excel lib 를 구해서 설치하고 잘 사용하고 있는데...
excel의 row 수가 늘어나면 mysql DB에 저장하는 속도도 같이 느려서 서버가 많이 딸리는 증상이 보입니다.
혹시 php excel 업로드 할때 속도를 개선할 수 있는 방법이 있을까요 ?
아래는 php excel upload 일부 코드 입니다.
function only_number($n) { return preg_replace('/[^0-9]/', '', $n); } if($_FILES['excelfile']['tmp_name']) { $file = $_FILES['excelfile']['tmp_name']; include_once(ADM_PATH.'/lib/PHPExcel/reader.php'); $data = new Spreadsheet_Excel_Reader($file, false, "UTF-8"); // Set output Encoding. $data->setOutputEncoding('UTF-8'); $data->read($file); error_reporting(E_ALL ^ E_NOTICE); $dup_it_id = array(); $fail_it_id = array(); $dup_count = 0; $total_count = 0; $fail_count = 0; $succ_count = 0; $it_id = $_POST['it_id']; $p_id = $_POST['p_id']; // 기존의 상품코드에 해당하는 가격 데이타를 모두 제거 한다. $sql = "DELETE FROM wiz_prdprice WHERE it_id='".$it_id."' AND p_id='".$p_id."' "; $que = mysql_query($sql); for ($i = 6; $i <= $data->sheets[0]['numRows']; $i++) { $total_count++; $j = 1; $prc_sdate = addslashes($data->sheets[0]['cells'][$i][$j++]); $yoil = addslashes($data->sheets[0]['cells'][$i][$j++]); $halin = addslashes($data->sheets[0]['cells'][$i][$j++]); $exchange = addslashes($data->sheets[0]['cells'][$i][$j++]); $pick01 = addslashes($data->sheets[0]['cells'][$i][$j++]); $pick02 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price11 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price11m = addslashes($data->sheets[0]['cells'][$i][$j++]); $price12 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price13 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price13m = addslashes($data->sheets[0]['cells'][$i][$j++]); $price14 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price14m = addslashes($data->sheets[0]['cells'][$i][$j++]); $optRe1 = addslashes($data->sheets[0]['cells'][$i][$j++]); $optNa1 = addslashes($data->sheets[0]['cells'][$i][$j++]); $optVa11 = addslashes($data->sheets[0]['cells'][$i][$j++]); $optVa12 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price21 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price21m = addslashes($data->sheets[0]['cells'][$i][$j++]); $price22 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price23 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price23m = addslashes($data->sheets[0]['cells'][$i][$j++]); $price24 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price24m = addslashes($data->sheets[0]['cells'][$i][$j++]); $optRe2 = addslashes($data->sheets[0]['cells'][$i][$j++]); $optNa2 = addslashes($data->sheets[0]['cells'][$i][$j++]); $optVa21 = addslashes($data->sheets[0]['cells'][$i][$j++]); $optVa22 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price31 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price31m = addslashes($data->sheets[0]['cells'][$i][$j++]); $price32 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price33 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price33m = addslashes($data->sheets[0]['cells'][$i][$j++]); $price34 = addslashes($data->sheets[0]['cells'][$i][$j++]); $price34m = addslashes($data->sheets[0]['cells'][$i][$j++]); $optRe3 = addslashes($data->sheets[0]['cells'][$i][$j++]); $optNa3 = addslashes($data->sheets[0]['cells'][$i][$j++]); $optVa31 = addslashes($data->sheets[0]['cells'][$i][$j++]); $optVa32 = addslashes($data->sheets[0]['cells'][$i][$j++]); $it_qty1 = addslashes($data->sheets[0]['cells'][$i][$j++]); if($it_qty1 !=0 && $it_qty1 =='') { $it_qty1 = "999"; } if($price11 =='') { $price11 = 0; } if($price21 =='') { $price21 = 0; } if($price31 =='') { $price31 = 0; } $prc_Tsum1 = (int)$price11 + (int)$price11m + (int)$price12 + (int)$price13 + (int)$price13m + (int)$price14 + (int)$price14m; $prc_Tsum2 = (int)$price21 + (int)$price21m + (int)$price22 + (int)$price23 + (int)$price23m + (int)$price24 + (int)$price24m; $prc_Tsum3 = (int)$price31 + (int)$price31m + (int)$price32 + (int)$price33 + (int)$price33m + (int)$price34 + (int)$price34m; $prc_sdate = date("Y-m-d",strtotime($prc_sdate) -1 ); $sql_idx = "select max(prc_idx) as idx from wiz_prdprice where p_id='".$p_id."' "; $result_idx = mysql_query($sql_idx) or error(mysql_error()); if($row_idx = mysql_fetch_array($result_idx)){ $s_idx = $row_idx['idx'] + 1; } $sql = " INSERT INTO wiz_prdprice SET `prc_idx` = '".$s_idx."', `it_id` = '".$it_id."', `p_id` = '".$p_id."', `prc_sdate` = '".$prc_sdate."', `it_qty1` = '".(int)$it_qty1."', `it_qty2` = '".(int)$it_qty1."', `it_qty3` = '".(int)$it_qty1."', `prc_exchange` = '".$exchange."', `prc_halin` = '".(int)$halin."', `prc_yoil` = '".$yoil."', `prc_Tsum1` = '".(int)$prc_Tsum1."', `prc_required1` = '".$optRe1."', `prc_price11` = '".(int)$price11."', `prc_price11m` = '".(int)$price11m."', `prc_price12` = '".(int)$price12."', `prc_price13` = '".(int)$price13."', `prc_price13m` = '".(int)$price13m."', `prc_price14` = '".(int)$price14."', `prc_price14m` = '".(int)$price14m."', `prc_optNa1` = '".$optNa1."', `prc_optVa11` = '".$optVa11."', `prc_optVa12` = '".$optVa12."', `prc_Tsum2` = '".(int)$prc_Tsum2."', `prc_required2` = '".$optRe2."', `prc_price21` = '".(int)$price21."', `prc_price21m` = '".(int)$price21m."', `prc_price22` = '".(int)$price22."', `prc_price23` = '".(int)$price23."', `prc_price23m` = '".(int)$price23m."', `prc_price24` = '".(int)$price24."', `prc_price24m` = '".(int)$price24m."', `prc_optNa2` = '".$optNa2."', `prc_optVa21` = '".$optVa21."', `prc_optVa22` = '".$optVa22."', `prc_Tsum3` = '".(int)$prc_Tsum3."', `prc_required3` = '".$optRe3."', `prc_price31` = '".(int)$price31."', `prc_price31m` = '".(int)$price31m."', `prc_price32` = '".(int)$price32."', `prc_price33` = '".(int)$price33."', `prc_price33m` = '".(int)$price33m."', `prc_price34` = '".(int)$price34."', `prc_price34m` = '".(int)$price34m."', `prc_optNa3` = '".$optNa3."', `prc_optVa31` = '".$optVa31."', `prc_optVa32` = '".$optVa32."', `prc_icon` = '0', `prc_pick01` = '".$pick01."', `prc_pick02` = '".$pick02."', `prc_regdate` = '".date("Y-m-d H:m:s")."' "; //echo $sql; mysql_query($sql); $suc_sql = "select * from wiz_prdprice where it_id='".$it_id."' AND p_id='".$p_id."' AND prc_sdate = '".$prc_sdate."' "; $suc_que = mysql_query($suc_sql); $rs = mysql_fetch_array($suc_que); if($rs['prc_sdate'] == $prc_sdate) { $succ_count++; } else { $fail_count++; continue; } $sql = "DELETE FROM wiz_prdprice WHERE prc_sdate = '1970-01-01' AND it_id = '".$it_id."' AND `p_id` = '".$p_id."'"; $que = mysql_query($sql); $sql = "DELETE FROM wiz_prdprice WHERE prc_idx = '0' "; $que = mysql_query($sql); //echo "</div>"; } $DBC->setLowPrice2($p_id, "free", $it_id); }
|
|||
다음글 | CI index.php parameters (4) | ||
이전글 | SELECT 해서 RAND 함수 통해 랜덤으로 출력하되... (12) | ||
변종원(웅파)
/
2016/09/19 17:38:29 /
추천
0
1 row만 insert 하지 않고 여러개 모아서 한꺼번에 하면 좀 빨라질 수 있습니다.
|
배강민
/
2016/09/19 18:05:03 /
추천
0
저 쿼리들을 sql 덤프파일형태로 떨구고 그 파일을 직접 실행하는 식으로 하면 훨씬 빨라지긴 합니다만, 그를 할 수 있는 상황인지를 봐야겠네요. 완전 실시간으로 처리하셔야만 하는게 아니라면, 큐방식으로 쌓아두고, 백단에서 별도로 진행하면서 유저에게는 그 상태를 보여주게 하는 방법을 많이 쓰기도 합니다. |