sql 질문
본문
$sql = " select * from {$g5['g5_shop_item_table']} where it_use = 1";
$result = sql_query($sql);
while( $list[] = mysqli_fetch_assoc($result) );
트래픽 초과를 일으키는 페이지 sql 구문이라는데
혹시 어디가 트래픽초과를 일으킬 문제 인가요?
mysqli_fetch_assoc 인가요? 상품은 100개 정도 이고 조건 검색을 하면 조건에 맞는 상품 몇개 나오는
정도 인데 트래픽 초과를 유발한다네요
답변 2
selec * from {$g5['g5_shop_item_table']} where it_use = 1
이건 사용하는 모든상품을
모든정보를 다가져와서
$list에 담는 기능인데
결국 메모리에 $list를 배열변수로 만들어서
어딘가로 전송할때
테이블 전체의 데이타를 다 던지는 효과가 있습니다.
실제화면상에서는 사용할게 몇개 안될수있지만
화면에 출력하기전에
print_r2($list);
를 찍어보시면 어느정도 양이 되는지 실감하실겁니다.
item에는 text 필드와 이미지경로들이 기본적으로 들어가는데
text필드가 한두개가 아니죠
text필드의 기본사이즈가 65000 바이트가 넘으니
그것의 모든테이블(약 100개정도라고 해도 65000*100인데 컬럼수가 여러개면 * 컬럼수가 증가됩니다.
실제로 사용할 컬럼으로 다시 추출하시는게 맞습니다.
while문에서 트래픽초과되지 않을까요? 무한반복문에 빠질수도잇는문제라..
while문이나 for문 잘못 구현하면 사이트 뻗어버리는 경우가 있습니다.