2010-12-14 3 views
1
if (is_dir($dir)) { 
    if($handle = opendir($dir)) { 
     while($file = readdir($handle)) { 
     // Break the filename by period; if there's more than one piece, grab the last piece. 
     $parts = explode(".", $file); 
     if (is_array($parts) && count($parts) > 1) { 
      $ext = end($parts); 
      // If it's an image that we want, echo the code. 
      if ($ext == "png" OR $ext == "PNG" OR $ext == "jpg" OR $ext == "JPG" OR $ext == "jpeg" OR $ext == "JPEG" OR $ext == "gif" OR $ext == "GIF") 
      echo "<img src=\"$path/$file\" />"; 
     } 
    } 
    closedir($handle); 
    } 
... 

Wordpress에서 사용하고 있으며 페이지로드가 매우 느리지 만 많은 이미지가있는 것일 수도 있습니다. 나는 단지 성능상의 이유로 눈살을 찌푸린 뭔가를하지 않기를 원했다.이 PHP opendir()이 서버에 과연 부담이됩니까?

답변

3

그럼 당신은 그것을 더 효율적으로 만들 수 있습니다 :

$extension = strtoupper(pathinfo($file, PATHINFO_EXTENSION)); 
if (in_array($extension(array('PNG', 'JPG', 'JPEG', 'GIF'))) { 
    echo '<img src="$path/$file" />'; 
} 

또는를 glob()를 사용하지 않고했던 opendir/readdir은/closedir ...보다 당신이 그것을 파일 확장자의 패턴을 제공 할 수 있기 때문이다.

하지만

2

Firefox의 "quickjava"플러그인을 다운로드하십시오.

이렇게하면 오른쪽 구석에있는 파란색 I을 클릭하여 이미지가 표시되지 않도록 할 수 있으므로 이미지가 표시되지 않고 웹 페이지의 성능을 테스트 할 수 있습니다.

3

우리는 그들과 성능에 영향을 줄 수있는 많은 구성 값이기 때문에 그했던 opendir 속도가 느린 말을 정확히 캔트에 대해 본질적으로 느린 아무것도 없다.

$start = microtime(true); 
//Your Code 
$end = (microtime(true) - $start); 

과가 처리하는 데 걸린했다 정확히 얼마나 오래 참조 :

은 당신이해야 할 것은 당신의 응용 프로그램 코드의 segement과 같이 벤치 마크입니다.

다른 팁 :

$ext == "png" OR $ext == "PNG" 중복, 당신은 다음 $ext = strtolower(end($parts));을 사용한다는 사용 : 더 나은

$ext == "png" OR $ext == "jpg" OR $ext == "jpeg" OR $ext == "gif" 

아직 방금 대신 OR를 사용 또한

if(in_array($ext,array("png","jpg","jpeg","gif"))){} 

을 사용할 수 있습니다 또는 조건에 대해 이중 배관 작업자를 사용하십시오 : ||.

관련 문제