2011-04-05 3 views
17

이미 존재하는 경우 apc_store()가 키를 덮어 쓰는 것을 알고 있으므로 차이점을 알고 있습니다. 제 질문은 단지 더 나은 방법/모범 사례는 무엇입니까?apc_add() 대 apc_store()

답변

36

두 기능의 유일한 차이점은 apc_add()이 기존 항목을 덮어 쓰지 않는다는 것입니다. 반면에
apc_store()은 기존 항목을 덮어 씁니다.

apc_add()apc_store() 사이에 어떤 것을 사용해야합니까?
글쎄, 모두 귀하의 필요에 따라 달라집니다 : 기존 항목을 덮어 쓰길 원하십니까?

+0

이 차이의 결과는 동시 환경에서 중요한 영향을 미칠 수 있습니다. 즉 과도한 잠금이 발생하여 대기 시간이 매우 길어 지거나 충돌이 발생합니다 (이에 대한 또 다른 답변이 추가되었습니다) – etov

1

Realy는 적용해야하는 논리에 따라 다르며 키를 덮어 쓸 필요가 없습니까? 그것은 당신에게 달려 있습니다.

+0

음 .. 변수를 덮어 쓰는 것은 코드 냄새를 생각 나게. –

+1

그러면 메모리에 페이지 오류가 있습니다. – DanMan

1

동시 환경에서 원자 카운터를 구현하려는 경우에 대비하여 apc_add()이 필요합니다. 그 주요 유스 케이스 IMO.

1

@ Pascal MARTIN이 쓰는 것 이외에도 실제적인 차이점이 있습니다. 과도한 동시 환경, 예를 들면,. 아파치에서 사용자 객체에 apc를 사용할 때 apc_store를 사용하면 apc time bomb이 될 수 있습니다 (링크는 2007 년이지만 여전히 관련이 있습니다!). apc_add는이 문제를 완화합니다.

은 참조 : https://serverfault.com/questions/342295/apc-keeps-crashing