2013-05-16 3 views
2

서버 측을 빠르게 참조 할 수있는 아주 작지만 영구적 인 데이터 구조를 만들고 싶습니다.매우 작고 영구적 인 데이터 구조

기본적으로 원하는 것은 3-10 개의 문자열을 포함하는 작은 구조체를 보유하고있는 배열입니다. 배열의 크기는 50-5,000 (확장 가능) 정도입니다.

나는 데이터베이스 사용을 고려하고 있었지만,이 경우 잔인한 것처럼 보입니다. 내가 JSON을 개최 파일을 사용하는 것을 고려하고 있었지만, 옳은 것 같지 않습니다. (내 서버는 파일을로드하고, 파일을 구문 분석 한 다음, CGI가 호출 될 때마다 리턴해야한다고 생각합니다.)

나는이 영구 데이터 구조에서 뭔가를 가져오고 싶을 때마다 호출 할 때마다 일정하고 빠른 시간을 갖기를 원합니다.

저는 현재 바닐라 아파치와 PHP만을 사용하고 있습니다.

+1

불필요한 읽기를 방지하기 위해 파일을 사용하고 APC에 내용을 캐시 하시겠습니까? 데이터는 얼마나 자주 업데이트됩니까? –

+1

SQLite를 보셨습니까? 이것은 서버에 별도의 것을 설치할 필요가없는 단지 하나의 파일에 대한 아주 기본적인 데이터베이스입니다. 그것은 PHP에서 상자 밖으로 작동합니다. – rpkamp

+0

memcached를 사용하는 것도 고려해보십시오. 적어도 메모리에 저장되어 디스크 I/O를 예비 할 것입니다. – Basic

답변

2

파일이 없어도 APC는 이러한 데이터를 저장할 수 있습니다! apc_fetch 및 apc_store. 유일한 문제는 데이터가 하나의 서버로 제한된다는 것입니다. 따라서 클러스터 또는 여러 서버가있을 때마다 데이터를 공유하지 않습니다. (http://www.php.net/manual/de/ref.apc.php)

여러 서버가 관련되어 있으면 memcached 또는 redis가 확인해야합니다. Redis에는 내장 배열이 있습니다.

편집 :

검사로 json_encode/json_decode가 빠른 속도로 더 빨리 직렬화/시나리오에 대한 때 unserialize 또는, jsonlib이 정말 빨리 될 수있는 경우. 그것은 당신 (개체 이름 등)에 대해 아마 불필요한 PHP 관련 데이터를 제거합니다.

Edit2 : 서버가 충돌하면 plain apc-solution이 모든 데이터를 잃게됩니다. 그것이 필요한 경우 파일에 기록해야하는 이유이기도합니다. apc는 아파치 프로세스 내부에 있으므로 memcached 또는 redis보다 빠릅니다.

+0

+1 memcached – Basic

+0

지금 APC를보고 있습니다. 몇 가지 질문 : 1. 캐시가 서버 재부팅시 저장됩니까? 2. APC를 서버에서 직접 수동으로 변경할 수 있습니까? 감사! –

+0

좀 더 명확히 해드 리도록하겠습니다. 클라이언트 측에서 더 좋은 인터페이스를 추가하지 않는 한 캐시 변경은 수동으로 서버 측에서 수행됩니다 (단 평균 사용자가 아닌 한 두 사람 만 사용) . 이 데이터 구조는 PHP에 의해 주로 읽혀질 것입니다. 서버를 재부팅 할 때 데이터가 지워지면 모든 정보를 텍스트 파일이나 JSON (아무거나 상관 없지만)에 저장하고 수동으로 복원 할 수만 있다면 괜찮습니다. –