PHP 사이트의 모든 웹 페이지에서 사용할 수 있어야하는 ~ 100 개의 문자열 변수가 있습니다. 데이터는 런타임에 절대로 바뀌지 않지만 앞으로는 여러 세트의 데이터가 필요하며 페이지 요청에 사용되는 데이터간에 전환해야합니다. 문자열의 길이는 5에서 600 자까지 다양합니다. 현재 다음과 같은 데이터가 포함 된 파일을 포함하고 있습니다.opcache로 PHP에서 정적 데이터 캐싱
$someStuff = "abc";
$otherStuff = "def";
// etc
저는 opcache를 사용하고 있습니다. 이 접근 방식은 opcache의 이점이 얼마나됩니까?
나는 this answer을 보았습니다. 캐싱 이점이 주요 조회를 수행하는 데 가치가있는 경우 연관 배열을 사용하도록 변경할 수 있습니다. 그러나 정적 배열 필드가있는 클래스를 사용하는 것이 변수를 선언하는 것보다 내 상황에 더 적합한 지 여부는 확실하지 않습니다.
고정 변수가있는 함수가 좋은 생각일까요? 정적 클래스 필드와 같거나 더 좋거나 나쁠까요?
function getItem ($name) {
static $items = array("someStuff" => "abc");
return $items[$name];
}
각 문자열의 변수 대신 함수일까요? 모든 문자열이 주어진 페이지에 사용되는 것이 아니라면 더 좋을까요? (종종 그렇습니다)?
function someStuff() { return "abc"; }
function otherStuff() { return "def"; }
최상의 해결책은 무엇입니까?
$someStuff = "abc";
$otherStuff = "def";
// ...
: 나는 가능한 한 효율적으로 디스크/데이터베이스에서 읽기 피하기 위해 같은 것 때문에 데이터가 모든 페이지에 필요 등 실제로
설명해 주셔서 감사합니다. 걱정하기에는 시기상조라고 생각했지만, 각 페이지에 있기 때문에 자신을 멈추기가 어려웠습니다. 나는 클래스와 정적 필드로 갔다. 건배! – NateS
BTW, 진정한 상수라면 [PHP Class Constants] (http://www.php.net/manual/en/language.oop5.constants.php)에서 읽어보십시오. – TerryE
그들은 실제로입니다. 몇 가지 정규식을 소스로 대체하여 클래스 상수로 전환했습니다. opcache와 클래스 상수를 사용할 때 어떤 오버 헤드가 있습니까?마이크로 벤치 마크가 잘못된 것을 측정 할 수 있거나 페이지로드 당 오버 헤드를 측정하기가 어려울 수 있습니다. 게다가, 그것은 단지 내 호기심을 만족시키기위한 것입니다. :) – NateS