나는 과거에 레일즈, 머블, 장고 및 asp.net mvc 어플리케이션을 사용 해왔다. 공통점 (질문과 관련이 있음)은 프레임 워크를 설정하는 코드를 가지고 있다는 것입니다. 이것은 대개 웹 서버가 재활용 될 때까지 유지되는 객체 및 상태를 만드는 것을 의미합니다 (예 : 라우팅 설정 또는 사용 가능한 컨트롤러 확인 등).PHP에서 요청 사이에 객체를 유지하는 방법
필자가 아는 한 PHP는 실행될 때마다 바이트 코드로 컴파일 된 CGI 스크립트와 유사합니다. 요청이 지나면 버려집니다. 물론 동일한 사용자의 요청간에 데이터를 유지하기 위해 세션을 가질 수 있으며 APC와 같은 확장이 있으므로 서버 수준의 요청간에 개체를 유지할 수 있습니다.
제 질문은 : 어떻게 레일과 같은 방식으로 작동하는 PHP 응용 프로그램을 만들 수 있습니까? 내 말은 첫 번째 요청에서 프레임 워크를 설정하고 두 번째 요청에서 나중에 설정된 개체를 사용하는 응용 프로그램을 의미합니다. mod_php에 캐싱 기능이 내장되어 있습니까? (예 : 실행 된 PHP 응용 프로그램의 컴파일 된 바이트 코드를 저장) 또는이 문제를 해결하는 유일한 방법은 APC 또는 몇 가지 유사한 확장명을 사용하고 있습니까? 어떻게 할 건데?
감사합니다.
EDIT : 대체 질문 : 설정 시간이 오래 걸리지 만 실행 시간이 짧은 대형 PHP 응용 프로그램을 만들면 (이미 설명한 프레임 워크에서와 같이) 이미 설정 한 항목을 어떻게 캐시해야합니까? 데이터베이스 연결을 제외하고는 많은 것들을 의미 할 수 있습니다. 왜냐하면 PHP에서 이미 영구 연결을 가지고 있기 때문입니다.
큰 설정 시간을 정당화하려면 : PHP 리플렉션을 사용하여 사용 가능한 개체를 확인하고 이에 따라 런타임을 설정하는 경우 어떻게해야합니까? 대다수의 리플렉션을하는 것은 대개 느리지 만 한 번만 수행해야합니다 (소스 코드가 수정 된 경우에만 다시 평가해야 함).
EDIT2 : 그러면 APC 인 것 같습니다. 바이트 코드를 자동으로 캐시한다는 사실은 알아두면 좋습니다.
스크립트 사전 컴파일은 작업의 일부일뿐입니다. 하지만 내가 corectly PHP를 사용 하여이 부분을 할 필요가 있는지, 오른쪽? 예를 들어, mod_php는 나를 위해 이것을하지 않을 것입니다. – SztupY
코드 캐싱은 투명합니다. APC를 설치하기 만하면 비활성화하지 않는 한 자동으로 바이트 코드가 캐시됩니다. 필자의 예제에서 $ table과 같은 앱 데이터는 자동으로 캐싱되지 않습니다. 너 혼자해야 해. –
왜 'apc_fetch'를 억제하지 않습니까? **'afc_fetch'는 성공했을 때 저장된 변수 또는 변수 배열을 반환합니다; 실패시 FALSE **. –