2014-02-14 3 views
0

Hy,symfony APC가 잘못된 내용을 캐시합니다.

APC를 캐싱 메커니즘으로 사용하여 심포니 1.3.8 응용 프로그램을 상속했습니다. 그렇더라도 사용하여 캐싱을 사용하지 않도록 설정했습니다.

*.symfony.routing.data 항목은 계속 저장됩니다.

매번 내가 내가 플러그인을 사용하여 생성 된 PDF 문서 $host/$app/erhebung/13398/ausweise.pdf에 지시 링크를 열, 내가 그 링크를 열 두 번째는 내가 오류를 얻을 :

Action "erhebung/13398" does not exist., referer: … 

캐시가하는 - 첫 번째 호출 후 -이 (가) 포함

잘못된 라우팅 패턴을 보인다
array(2) { 
    'parse_/erhebung/13398/ausweise.pdf_b0d96fa30dcf0130d6a4b26f14f44bfb' => 
    array(3) { 
    'name' => 
    string(7) "default" 
    'pattern' => 
    string(18) "/:module/:action/*" 
    'parameters' => 
    array(3) { 
     'module' => 
     string(8) "erhebung" 
     'action' => 
     string(5) "13398" 
     'ausweise.pdf' => 
     bool(true) 
    } 
    } 
    'generate__4d783133e9aa851733d16cf1d1750ad5_b0d96fa30dcf0130d6a4b26f14f44bfb' => 
    string(1) "/" 
} 

의 직렬화 값, 그것은해야한다 :

erhebung_ausweise: 
    url: /erhebung/:id/ausweise.pdf 
    param: { module: erhebung, action: ausweise } 
    requirements: { id: \d+ } 
01 23,516,

대신 :

default: 
    url: /:module/:action/* 

나는 APC 캐시를 지우 때 수동으로 내가 생성 할 수 있습니다 다시 한번 PDF를 엽니 다.

답변

0

Okey,이 문제를 해결하는 데 며칠이 걸렸으며 xdebugprint_debug_backtrace과 같은 다른 도구로 xhprof을 사용했습니다.

그 문제의 원인을 설명 드리겠습니다.

동일한 URL이 두 번 라우팅되었습니다. 첫 번째는 올바른 요청 처리기를 실행하고 두 번째는 실수로 실행합니다. 내 전임자는 다른 앱의 라우팅 구성을 읽는 자체 개발 cross_app_url -function을 사용합니다. 이 과정에서 uri가 다시 구문 분석되고 결과 (기본 경로를 사용하여 찾은 것이 없습니다)가 캐싱되었습니다 (다시). 따라서 uri가 요청 처리기에 대한 첫 번째 라우팅으로 불려지므로 오류가 발생하여 두 번째로 오류가 발생합니다.

아무도 같은 문제에 빠지면 나보다 쉽게 ​​찾을 수 있기를 바랍니다.

관련 문제