문자열 값을 사용하여이를 사용자 레코드와 비교하고 일치하는 사용자의 레코드를 반환하는 메서드를 만들었습니다.캐싱 Symfony 사용자 정의 모델 클래스 메서드
내 코드 :
class UsersPeer extends BaseUsersPeer
{
public static function getHashUser($hash)
{
$c = new Criteria();
$c->add(UsersPeer::HASH,$hash);
return UsersPeer::doSelectOne($c);
}
}
가이 기능을 캐시하는 것은 의미가 있습니까?
필자의 이해에 따르면 함수에 전달 된 문자열 값은 항상 다른 사용자에 따라 다르기 때문에이 함수는 매번 실행됩니다. 그러나 이전에 메소드에 전달 된 문자열 값과 검색된 레코드에 대한 사용자에게는 다시 실행되지 않습니다. 이 경우에만 기능 캐싱이 작동합니다.
사용자가 약 50,000 명이라면이 방법으로 캐싱을 사용하는 것이 좋습니다.
고마워요! 그러나 이것은 예제 함수와 같습니다. 아마도 제 질문은 분명하지 않습니다. 실수해서 미안해. 제가 정확히 알고 싶은 것은 함수에 인자를 넘기는 경우와 인자가 다를 때마다 함수의 출력이 다른 경우 함수 캐싱이 어떻게 작동하는지입니다. 그러면 캐시는 어떻게 작동합니까? 이런 경우 캐싱을 사용하는 것이 현명한 선택입니까? 제 질문을 다른 StackExchange 사이트로 옮겨야합니까? 프로그래머 또는 codereview? – gentrobot
그런 경우에는 캐시 키에 입력 내용을 포함시켜야합니다. – Maerlyn
예, 할 수 있습니다. 그러나 모든 다른 결과가 나오겠습니까? 예를 들어, 입력 1을 pas하면 'abc'결과가 나타납니다.다음에 입력이 1이 아닌 다른 값이면 함수에 의해 출력이 계산됩니다 (캐싱도 됨). 그러나 입력이 다시 1이면 출력은 함수에 의해 계산되지 않고 캐시 된 결과가 제공됩니다. 이 방법으로 작동합니까? 이러한 경우 함수 캐시가 너무 커지지 않을까요? 그런 캐싱을 사용하도록 설정하는 것이 좋습니다. 이 댓글에 대한 답장을 보내려면 위의 답변을 수정하십시오. 그렇게하면 대답을 받아 들일 수 있습니다 :) – gentrobot