Java Servlet에서 PHP로 응용 프로그램을 포팅합니다. PHP에서 Servlet.init()과 동등한 것은 무엇입니까?서버를 초기화하는 방법 PHP에서 한 번만
기본적으로 페이지는 계산해야 할 테이블을 사용합니다. 그것은 꽤 비싼 작업입니다. 나는 램프를 사용하고있다. 아파치 시작시 한 번만 테이블을 초기화 할 수있는 방법이 있는지 궁금합니다.
Java Servlet에서 PHP로 응용 프로그램을 포팅합니다. PHP에서 Servlet.init()과 동등한 것은 무엇입니까?서버를 초기화하는 방법 PHP에서 한 번만
기본적으로 페이지는 계산해야 할 테이블을 사용합니다. 그것은 꽤 비싼 작업입니다. 나는 램프를 사용하고있다. 아파치 시작시 한 번만 테이블을 초기화 할 수있는 방법이 있는지 궁금합니다.
몇 가지 방법으로이 작업을 수행 할 수 있지만 익숙한 Servlet.init() 메서드를 실제로 모방 한 것은 없습니다. 값을 초기화하여 세션에 저장할 수는 있지만 각 사용자마다 하나의 페널티를 만들거나 응용 프로그램이 액세스 할 수 있고 각 사용자마다 고유하지 않은 캐시를 사용하게됩니다. Zend에는 메모리 기반 (예 : APC 또는 eAccelerator) 및 파일 기반 캐싱과 함께 작동하는 캐시 용 인터페이스를 사용하기가 매우 쉽습니다.
http://www.zend.com/products/platform/과 같은 것이 필요합니다. 응용 프로그램 서버와 달리 PHP는 모든 요청에 대해 모든 처리를 수행합니다. zend 플랫폼과 같은 것이 없다면 지속성에 대한 개념이 없습니다.
우리는 값이 싸기 때문에 상업적인 제품이 문제가되지 않습니다. 오픈 소스에 상응하는 모든 것을 알고 있습니까? –
오픈 소스 대안에 대해 모르겠다. 세션 관리가 문제가되지 않으므로 시도해 볼 수있는 또 다른 옵션은 내가 제안하는 것을 주저하면서 데이터베이스에 값을 저장하는 것입니다. PHP 객체를 직렬화하거나 다른 방법을 통해. – Myles
PHP에는 응용 프로그램 범위가 없습니다. $GLOBALS
을 남용 할 수도 있지만 $_SESSION
에 데이터를 저장하거나 Zend_Cache을 사용하는 것이 좋습니다.
아마도 서버의 파일에서 테이블을 초기화 할 수 있습니까? 예를 들어, 테이블에 뭔가가 업데이트 될 때마다 다시 작성해야하는 경우, 다음 PHP 코드를 초기화하는 동안
:
compare data source update against file update time
if file needs update, then
do number crunching
write into file
else
read file
이 사용되는 파일을 방지 논리에 의해 보완되어야 할 것이다 동시성 101 연습이 업데이트됩니다.
I/O 작업이 지연되는 곳이기 때문에 파일이 작동하지 않습니다. –
확실히 파일 I/O가 데이터 계산보다 빠릅니까? 적어도 그것이 내가 "그것은 값 비싼 작업"이라고 해석 한 것입니다. 분명히 파일을 읽는 것이 쿼리 중에 너무 비싸다고 생각하지 않습니까? – wallyk
서버에 루트 (또는 퓨즈) 액세스 권한이 있으면 파일을 tmpfs 마운트에 저장할 수 있습니다 (항상 메모리에 저장됩니다). 메모리에 머무르게하는 더 쉬운 방법이있을 수 있습니다. –
각 사용자가 일반적으로 한 번만 페이지를 방문하기 때문에 세션이 작동하지 않습니다. 캐시가 작동 할 수 있습니다. 그것을 들여다 볼 것입니다. –
젠드 프레임 워크 (오픈 소스, 무료)를 사용하고 있다면 ZendCache를 사용해보고 백 엔드 파일을 사용하여 효과가 있는지 확인하십시오. 그렇다면 mem 캐시 백엔드로 쉽게 전환하여 성능을 향상시킬 수 있습니다. 또한 Zend Framework를 포함하지 않고도 APC 및 eAccelerator를 사용할 수 있습니다. –