2012-12-08 1 views
0

현재 나는 그들을 글로벌에 저장합니다. 그게 올바른 방법일까요? 변수가 현재 요청에 머물러있게하고 요청이 끝난 후에 사라집니다. 예를 들어아파치 모듈 개발, 요청 변수를 저장하는 올바른 방법

: 필터링하면서 3 COND가 한 번에 발생하지 않을 수

int data1; 
int data2; 

apr_status_t my_input_filter (ap_filter_t *f, apr_bucket_brigade *bb, 
    ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes) { 
    if (somecond1) data1 = xyz; 
    if (somecond2 & data1 == xya) data2 = abc; 

    if (somecond3 && data2 == abc) dosomething(); 
} 

주, 그들은하지만 같은 요청에, 다른 순간에 나타날 수 있습니다.

답변

0

모듈이 이벤트 또는 다중 스레드 패키지로 실행되는 경우 전역 변수에 저장하는 것은 나쁘지 않은 나쁜 생각입니다.

아파치는 요청 구조에서 노트 사전을 제공합니다. 개인 데이터를 저장하는 데 사용하십시오.

+0

input_filter에 대해 내 f-> r은 항상 NULL입니다. 참고를 사용할 수 없다고 생각합니다. – w00d

+0

트릭 # 2 : 데이터를 저장하는 연결로 인덱싱 된 자신의 해시 테이블을 만듭니다. 연결이 끊어졌을 때 해시 항목을 제거하려면 connection-> pool에 정리 훅을 추가하십시오. – MJZ