CI 묻고 답하기

제목 view에서 view로 데이터 전달이 가능한가요?
글쓴이 가내수공업개발자 작성시각 2013/11/19 03:21:48
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 16500   RSS
 
1번 뷰에서 쓰였던 데이터를 2번 뷰에서도 같이 씁니다.

요청이 있을때마다 DB 쿼리 날리고, 2번 뷰 요청이 있으면 또 한번 하는건 부하가 있을 듯 해서 좀 꺼려 집니다.

(2번뷰는 1번뷰의 상세 페이지 입니다만, 같은 페이지에 있지 않고 다른 view 입니다)


이럴경우에 그냥 1번에서 다 처리하고, 1번에서 안 쓰이는 2번뷰의 데이터도 같이 json 형태로 view에 넘겨서 

2번뷰 요청이 있을때 post로 넘기는게 나을까요?

(이 경우는 유저가 보는 page의 용량이 증가하고 json데이터가 client에 한번 갔다 오니 사용자에게 부하를 분산시키는것 같기도 합니다만...)


아니면, 그냥 요청이 있을때마다 처리하는게 나을까요?


혹세, model 이나 controller 에서 데이터를 저장하거나 전달하는 방법은 없을까요?



그냥 java 나 이런거면 class로 만들어서 instance로 만들면 될텐데... php는 어렵네요 ㅋㅋ
 다음글 DB Insert시 에러 핸들링 방법? (1)
 이전글 글등록은 되는데 한글로 하는 ""값이... (1)

댓글

인스카 / 2013/11/19 08:46:40 / 추천 0
페이지 이동시 POST로 값이 왔다갔다 하는 건 별로 좋지 않아 보입니다. Ajax 요청로 DB에 임시로 갖고있고, 두 번째 페이지에서 임시 값을 가져다 사용하는 Ajax를 구현하는 것이 나아 보이네요..

코드레벨에서 본다면 데이터의 getter setter 정도를 model에서 구현해 주고, controller에서 인자값으로 getter와 setter를 구분해서 호출하면 될 것 같습니다..
한대승(불의회상) / 2013/11/19 11:03:01 / 추천 0
세션의 flash_darta가 비슷한 용도로 사용 될 수 있겠네요.

http://cikorea.net/user_guide_2.1.0/libraries/sessions.html
가내수공업개발자 / 2013/11/19 11:54:35 / 추천 0
@인스카 DB에 저장할만한 데이터가 아니라서, 임시값을 DB에 썼다 지우는게 왠지 서버 부하가 더 심할 것 같습니다.

@한대승 쿠키나, 세션도 나쁘지 않은 선택같네요. 


그런데 php는 언제 인스턴스가 생성되는건가요?

아파치에 의해서 페이지가 요청될때인가요? 요청 될때마다 인스턴스가 재 생산이 된다면, OO의 이점 중에서 그냥 '코드의 재사용'만 활용하는 건가요?



milosz / 2013/11/19 12:25:14 / 추천 0
 그냥 새 페이지 부르셔도 될 듯 합니다. java만큼 페이지 불러오는 비용이 비싸지 않기 때문에 괜찮다고 생각 되네요.
가내수공업개발자 / 2013/11/19 12:45:55 / 추천 0
 @milosz for loop 를 꽤 많이 돌려야 하는거라... 좀 고민입니다.
milosz / 2013/11/19 20:56:46 / 추천 0
 그렇다면 파일로 캐시하거나 해야 할 듯 하네요. 자바에서처럼 인스턴스가 계속 살아있거나 하지는 않습니다만 큐를 만들어서 소켓으로 주고 받던지 하는 방법으로 해결할 수도 있을듯 합니다.
변종원(웅파) / 2013/11/19 21:35:14 / 추천 0
php는 스크립트언어라 브라우저에 전달되는 순간(?) (말로 설명하기 애매하지만 ) 
전달되기 전에 역할이 끝납니다.

보통 여러 페이지에 걸쳐 회원가입을 하거나 주문을 하는 경우 불상님 말씀처럼 flash_data를 이용하거나
db에 넣거나(db변수 라이브러리 존재. phpclasses.org) 쿠키나 파일로 쓰거나 합니다.

파라미터로 주렁주렁 달고 다니는 것도 봤습니다.

flash_data가 쓰기 제일 좋습니다. ^^
가내수공업개발자 / 2013/11/20 02:19:50 / 추천 0
@milosz 근데 또 file cash 할만한 부하는 아니라서요 ㅎㅎㅎ 감사합니다.

@변종원 역시 세션이 답인가 보군요. 감사합니다.
가내수공업개발자 / 2013/11/20 04:02:59 / 추천 0
 기냥 file caching 으로 처리했습니다. ㅎㅎ