2013-06-02 2 views
1

PHP에서 file_get_contents을 사용하면 동일한 파일에서 두 번 사용하면 어떻게됩니까?동일한 파일에 대해 PHP file_get_contents를 여러 번 사용하십시오

파일을 한 번만로드하고 후속 호출에서 첫 번째 호출 결과를 참조하는 것이 지능적입니까? 또는 나 자신과 같은 것을 구현해야합니까? 워드 프로세서에서

는 이것을라는 한 줄을 가지고,하지만 난 정말 무슨 뜻인지 이해가 안되거나 관련이 있는지 여부 :

성능을 향상시키기 위해 당신의 OS가 지원하는 경우 메모리 매핑 기술을 사용합니다

.

테스트 케이스를 준비하는 방법을 잘 모르므로, 어떻게 할 수 있는지에 대한 정보도 유용 할 것입니다.

답변

3

파일을 두 번 읽습니다. 동일한 내용을 두 번 원한다면 어쨌든 좋은 연습 문제로 변수에 넣으십시오.

+0

필자는 그렇게 생각했지만, PHP가 사람들을 스패밍하는 것을 피하기 위해 충분히 똑똑했을 것이라고 생각했습니다. 또한 나는 이것이 중복 될 것이라고 확신했지만 아무것도 찾을 수 없었다. 당신이 (사회자가되는 경우) 알려주십시오. – Marty

+0

@ MartyWallace : 글쎄, 일반적으로 말하기는 정말 불가능합니다. 파일 읽기 사이에 아무 것도 일어나지 않거나 파일이 너무 커서 캐시 할 수 없거나 소켓/파이프 등일 수 있습니다. 개발자가 프로그램에 정확히 무엇을 해야할지 말할 수있을 때 신뢰할 수없고 그럴 가치가 없습니다. [검색으로 알 수있는 한 중복되지 않습니다.] – Ryan

+0

PHP가 이것을 캐쉬한다면 파일을 변경 (예 : 아약스 호출 등)하여 파일을 다시로드하려는 경우 문제가 발생합니다. – DaGardner

0

PHP는 파일을 캐시하지 않지만 근대 OS가 파일을 캐시하므로 사람들이 생각하는 것만 큼 나쁘지는 않습니다. 메모리 맵은 액세스하는 파일의 크기와 액세스 패턴에 따라 성능 이점이있는 OS에서 제공하는 파일에 액세스하는 또 다른 방법입니다. 파일 크기가 작은 경우 (예 : 4KB) 차이점을 알 수 없습니다.

가장 큰 문제는 여러 프로세스에서 파일에 액세스하는 것이므로 OS에 캐싱을 남기고 PHP에서 잠금을 관리하는 것이 더 쉽습니다. sleep()을 사용하여 &을 파일에 쓰는 루프를 실행하고 파일을 인쇄 한 다음 프로그램을 동시에 실행할 수 있습니다 (예 : 브라우저의 두 창에서).

관련 문제