| 제목 | 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 덤프파일형태로 떨구고 그 파일을 직접 실행하는 식으로 하면 훨씬 빨라지긴 합니다만, 그를 할 수 있는 상황인지를 봐야겠네요. 완전 실시간으로 처리하셔야만 하는게 아니라면, 큐방식으로 쌓아두고, 백단에서 별도로 진행하면서 유저에게는 그 상태를 보여주게 하는 방법을 많이 쓰기도 합니다. |