2011-08-09 2 views
0

그래서 난, 코드 달러 (A $)의 _GET var에 기반으로 디렉토리를 검색하는 기능을 구축했습니다 :대기 시간 문제

$dir="img/".$_GET["gal"]; 
    $a=scandir($dir); 
    $b=array_slice($a,2); 


    for($i=1,$j=1;$i,$j<=count($b);$i++,$j++){ 
    $marginRight=($i==6||$i==12||$i==18||$i==24||$i==30||$i==36)?"margin-right: 0":"margin-right: 13px"; 
    if($i<10 && $j<10) 
    echo '<div class="GalThumbs" style="'.$marginRight.'"><a href="'.$dir.'/'.$_GET["gal"].'-0'.$j.'.jpg" rel="example3"><img src="'.$dir.'/'.$_GET["gal"].'-0'.$i.'.jpg"/></a></div>'; 
    else{ 
    echo '<div class="GalThumbs" style="'.$marginRight.'"><a href="'.$dir.'/'.$_GET["gal"].'-'.$j.'.jpg" rel="example3"><img src="'.$dir.'/'.$_GET["gal"].'-'.$i.'.jpg"/></a></div>'; 
    } 
    /* if($i==11) 
    break; */ 

} 

대기 시간을 스캔 할 열 개 이상의 이미지가있는 경우

if($i==11) 
    break; 

가 있다면 : 을 (브라우저 slowish의 다시 그리기) 발생 나는이가 댓글을 달았 사용하여 발견

if($i==10) 
     break; 

대기 시간이 없습니다. 여기에 무슨 일이 일어나고 있는지 이해하지 못해요.

+1

정말 낮은 가능성. 테스트를위한 URL을 얻었습니까? –

+0

@ tada : 코드로 작업 해 보았습니다. 아래 답변을 참조하십시오. #i가 상상할 수있는 한 가지 : 이미지 경로를 확인하십시오. 어쩌면 10 이상의 숫자가 매겨진 이미지는 잘못된 URL을 가지고있어 404 응답이 약간 붙어 렌더링되고, 리디렉션되는 등의 문제가있을 수 있습니다. 디스크의 파일 번호는 어떻게됩니까? – hakre

+0

파일은 다음과 같습니다. 127thAtStNick-1.jpg, 127thAtStNick-2.jpg 127thAtStNick-01.jpg, 127thAtStNick-02.jpg와 같이 시도했지만 여전히 대기 시간이 발생합니다. – tetris

답변

1

코드를 살펴 보겠습니다. 어떻게 든 코드에서 잃어버린 것처럼 보입니다. 조금 정리하면 대기 시간 문제를 훨씬 쉽게 디버깅 할 수 있습니다.

for($i=1,$j=1;$i,$j<=count($b);$i++,$j++) 

두 반복자 변수가 병렬로 설정됩니다

는의가가에 대한 루프 시작하자. 네가 그걸 썼을 때 너는 무언가에 대해 생각해 왔을거야. 계속하는 방법을 모를 경우 문제를 줄이기 위해 노력하십시오.

하나의 변수가 작업을 수행합니다. 여기에 같은 :

if($i<10 && $j<10) 

그리고 나는이 이상 발견 : 당신은 실제로 modulo를 찾고 있습니다

$marginRight=($i==6||$i==12||$i==18||$i==24||$i==30||$i==36)?"margin-right: 0":"margin-right: 13px"; 

: 6로 나눈 $i의 나머지를 가져옵니다.

if/else 블록에는 모두 동일한 코드가 들어 있습니다. 전혀 사용할 필요가 없습니다.

그런 다음 for 루프를 중단하려면 디버깅을해야한다고 가정합니다.

다음으로 들여 쓰기로 코드를 활용할 수 있습니다.

디렉토리는 파일 수를 얻기 위해 실제로 읽혀 지므로 파일 수를 얻기 위해 코드를 줄일 수 있습니다.

하자 시도 :이 사실임을

$gal = $_GET["gal"]; // FIXME sanitize the input 
$dir = sprintf('img/%s', $gal); 
$max = count(scandir($dir))-2; 

for($i=1; $i<=$max; $i++) 
{ 
    $marginRight = ($i % 6 ? '13px' : '0'); 
    $style = sprintf('margin-right: %s', $marginRight);   
    $src = sprintf('%s/%s-0%d.jpg', $dir, $gal, $i);  

    echo '<div class="GalThumbs" style="', htmlspecialchars($style), '">', 
      '<a href="', htmlspecialchars($src), '" rel="example3">', 
      '<img src="', htmlspecialchars($src),'"/>', 
      '</a>', 
     '</div>' 
    ; 

    // FIXME debug 
    /* if($i==11) break; */ 
} 
+0

사파리 4.0으로 업그레이드하면 브라우저가 거의 충돌하는 것과 동일한 문제가 발생합니다. – tetris

+0

응답하지 않는 네트워크 연결을 분석하십시오. – hakre

+0

어떻게 할 수 있습니까? – tetris