2010-12-10 3 views
1

데이터베이스에 이미지 ID가 가득 찼습니다. ID는 서버에 저장된 이미지의 파일 이름에 해당합니다. 이미지 디렉토리에있는 모든 파일이 데이터베이스에 있는지 확인하고 싶지 않은 경우 의 배열을이 아닌 인 데이터베이스 만 반환합니다.PHP - 여러 파일이 데이터베이스에 있는지 확인하는 좋은 방법이 있습니까?

현재 scandir을 사용하여 디렉토리의 파일 배열을 얻은 다음 SQLite 데이터베이스에서 모든 이미지 ID를 검색하고 array_diff을 사용하여 이미 데이터베이스에없는 모든 파일을 반환합니다.

나는 이것이 매우 효율적인 방법이라고 생각하지 않습니다. 특히 서버에있는 파일의 양이 증가 할 때 특히 그렇다고 생각하지 않습니다. PHP를 사용하고 있습니다.

답변

2

데이터베이스를 쿼리하기 전에 파일 이름 배열을 정렬 한 다음 데이터베이스 쿼리에서 파일 이름으로 정렬 된 결과를 검색 할 때이 정렬 된 배열을 검사 할 수 있습니다.

그러나 배열 작업이 메모리에서 이루어 지므로 현재의 솔루션은 상당히 저렴합니다.

는하고 싶지 않아요 무엇인가

  1. 은 파일 시스템에서 파일을 찾아 개별적으로
  2. 쿼리 데이터베이스의 각 파일을 개별적으로

이 중 하나를 작업이 상당히 비쌉니다. 다른 솔루션에 대해서도 10 만개의 파일을 얻을 때까지 정상적으로 작동합니다.

관련 문제