2010-02-14 4 views
2

이미지 호스팅이 있습니다. 모든 이미지 요청은 mod_rewrite를 사용하여 PHP 스크립트로 리디렉션됩니다. PHP 스크립트는 fread() 함수를 사용하고 다른 파일의 그림을 표시합니다. 알고 싶습니다. 많은 프로세서 시간을 사용합니까, 사용하지 않습니까?아파치에서 mod_rewrite

+0

SO Leonid에 오신 것을 환영합니다. –

답변

0

그렇습니다. PHP 인터프리터가 모든 작은 리소스 요청에 대해 초기화되고 데이터를 통과해야하기 때문에 웹 서버에 상당한 부담이됩니다. 합의는 이것이 트래픽이 많은 웹 사이트에서해야 할 좋은 일이 아니라는 것입니다.

왜이 작업을 수행하고 있습니까? 이미지의 크기를 조정하고 있습니까?

+0

아니요. 모든 이미지의 크기가 이미 조정되었습니다. 모든 이미지를 제어하고 싶습니다. E. g. 이미지를 본 횟수를 알고 싶습니다. 이미지 및 다른 기능을 사용하지 못하게하려고합니다. – Leonid

+0

파일 시스템 수준의 IMO에서이를 수행하는 것이 좋습니다. 모든 액세스는 Apache에 로그인되어 있으며 거기에서 필터링 할 수 있습니다. 'htaccess' 지시어를 사용하거나 이름을 바꾸거나 지워서 이미지를 비활성화 할 수 있습니다. –

+0

하지만 진짜 이미지 파일이 아니라고 보내고 싶습니다. E. g. 나는 "이미지가 일시적으로 사용할 수 없습니다"또는 "작은 중고 이미지"와 다른 텍스트로 사용자에게 이미지를 보내고 싶습니다. htaccess를 사용하여 어떻게 할 수 있습니까? – Leonid

1

얼마나 많은 프로세서 시간이 필요하다고 생각 하느냐에 따라 다르지만, mod_rewrite와 PHP가 필요로하는 처리 시간은 이미지를 읽는 I/O 시간과 비교하면 간단합니다 디스크에 넣고 네트워크를 통해 전송하십시오.

속도가 걱정된다면 이미지를 메모리에 캐싱하는 것이 가장 좋습니다.

0

CPU 제한을 초과하기 전에 메모리가 부족합니다 :-) 파일 읽기/쓰기는 CPU 집약적 인 작업이 아니지만 생성 된 각 아파치 프로세스는 최대 50MB의 RAM을 사용할 수 있습니다. 당신은 빠르고 안전한 이미지를 전송할 경우, X-sendfile을 조사한다

0

- 이것은 PHP 스크립트가 아파치를 들어 header('X-SendFile: /path/to/the/file');

같은 것을 사용하여 URL로 직접 접근 할 수없는 파일을 전송하기 위해 웹 서버를 말할 수 있습니다 mod_xsendfile (http://tn123.ath.cx/mod_xsendfile/)이지만 베타 레이블이 붙어있어 프로덕션 환경에서 매우 안정적이며 소스 코드가 작아서 쉽게 감사 할 수 있습니다.