2012-04-14 4 views
-2

저는 PHP 전문가가 아닙니다. 도움이 필요합니다.PHP 스크립트 최적화

나는 선택 메뉴가있는 PHP 양식이 있습니다. 메뉴는 고객 테이블 전자 메일로 구성됩니다. 다음 코드를 사용했습니다 :

for($i = 0; $i < sizeof($customers_table); $i++){ 
    echo '<option value="'.$customers_table[$i]['id'].'">'.$customers_table[$i]['email'].'</option>'; 
} 

베이스가 너무 커서 옵션 필드를 구성하는 데 시간이 걸립니다. 스크립트를 최적화하여 더 빨리 작동 할 수있는 방법이 있습니까?

감사합니다.

$size = sizeof($customers_table); 
for ($i = 0; $i < $size; $i++) { 
    echo '<option value="'.$customers_table[$i]['id'].'">'.$customers_table[$i]['email'].'</option>'; 
} 

는 그런 다음 루프 조건이 단축 될 수 있습니다 및 배열 액세스 감소 : 크기가 변경되지 않기 때문에

+1

선택 상자에 수천 개의 옵션이 있어야 자동 완성 기능을 사용하지 않는 한 사용자에게 친숙하지 않습니다. – Andy

+0

for 문 안에'sizeof()'를 만들지 말고 대신 그 값을 가진 변수를 생성하십시오. 그래서 모든 루프 호출에서 호출되지 않습니다. 그러나 그것은 PHP가 그러한 약점 자체를 삽입한다고 생각하기 때문에 그다지 큰 영향을 미치지 않는 마이크로 최적화 일뿐입니다. 스크립트를 더 큰 범위에서보아야합니다. –

답변

1

, 보관

$i = $size = sizeof($customers_table); 
while ($i) { 
    $table = $customers_table[$size-$i--]; 
    echo '<option value="'.$table['id'].'">'.$table['email'].'</option>'; 
} 

다음 부분은 에코 문이다 이는 단지 수 출력하기 전에 문자열을 concatenating하는 대신 출력하십시오.

$i = $size = sizeof($customers_table); 
while ($i) { 
    $table = $customers_table[$size-$i--]; 
    echo '<option value="', $table['id'], '">', $table['email'], '</option>'; 
} 

이렇게하면 diffe가됩니다. 너는 미터법이 필요해. 가장 많은 시간은 브라우저에 보내는 HTML의 양일 수 있습니다. 하지만이 부분의 범위를 벗어날 것입니다.

foreach ($customer_table as $row) 
{ 
    echo '<option value="', $table['id'], '">', $table['email'], '</option>'; 
} 

이 일반적으로 꽤 빨리 잘 :

내가 foreach을 사용하는 것이 좋습니다 코드의 전체적인 가독성을 향상시킬 수 있도록 지원합니다.

+0

이것이 최적화라고 확신합니까? – Starx

+0

@Starx : 네, 절대적으로. calling sizeof 또는 count 꽤 비쌉니다. 어쨌든, 최적화는 마이크로가 실제로 차이를 느끼지 못하는 것일 수 있습니다 ^^ – hakre

0

Andy가 말했듯이,이 방법으로이 스크립트를 최적화하는 것은 좋지 않습니다. 시간을 많이 변경하려면 문제를 재고해야합니다.

고객 목록이 있으며, 시간 문제가있는 경우 많은 정보가 있다고 가정합니다. 따라서 드롭 다운 목록은 사용자에게는 쓸모가 없습니다. 한 번만 루프를 할 필요가 있도록> HTML 코드는 항상, 동일합니다 추가 할 때, 삭제 또는 업데이트 캐싱의 종류를 사용

  • :

    은 다른 솔루션보다 효율적 있습니다 고객을 식별하고 스크립트 또는 데이터베이스에 html 코드를 저장합니다. 따라서 페이지가 다시로드 될 때마다 html 코드를 검색하면됩니다.

  • 모든 고객을로드하지 마십시오.> 사용자가 관심있는 모든 고객을 볼 필요는 없으므로 일부 Ajax에서는 사용자가 입력하는 동안 옵션을로드 할 수 있습니다 (예 : jQuery Autocomplete 참조).)

이러한 솔루션은 최적화에 가장 적합하며 입력 한 3 가지 이상의 캐싱 및 자동 완성 기능을 함께 사용하면 사용자 환경에 더 좋을 것입니다.