PHP를 사용하여 MySQL 데이터베이스를 작동시킬 때, 특히 대규모 쿼리 결과를 처리 할 때 성능 및 효율성은 주요 고려 사항입니다. mysqli_result :: $ lengths 는 MySQLI 확장의 속성으로 현재 결과 세트에서 각 필드의 데이터 길이를 가져옵니다. 합리적으로 데이터 읽기 및 처리 프로세스를 최적화하고 프로그램 실행 효율성을 향상시키는 데 도움이됩니다.
$ 길이는 배열을 반환하는 mysqli_result 객체의 속성이며 배열의 각 요소는 현재 결과 행에서 해당 필드의 바이트 길이에 해당합니다. 일반적인 사용 시나리오는 mysqli_stmt :: fetch 또는 mysqli_result :: fetch_row 등과 같은 메소드와 함께 필드 데이터 크기를 정확하게 얻고 불분명 한 필드 내용 길이로 인한 추가 메모리를 피할 수있는 방법과 함께 사용하는 것입니다.
데이터의 정확한 길이를 알면 큰 텍스트, 대형 이진 데이터 (BLOB) 또는 불규칙한 길이가 포함 된 필드를 처리 할 때 도움이 될 수 있습니다.
불필요한 문자열 자르기 또는 확장을 피하십시오.
너무 크거나 작은 캐시 공간을 보유하지 않도록 메모리 관리를 최적화하십시오.
스트리밍 읽기 데이터는 정확한 경계를 제공하고 중복 읽기를 줄입니다.
다음 예제는 $ 길이를 결합하여 빅 데이터를 처리 할 때 데이터를 읽고 처리하는 방법을 보여줍니다.
<?php
$mysqli = new mysqli("gitbox.net", "user", "password", "database");
if ($mysqli->connect_errno) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$query = "SELECT id, large_text_column FROM big_table";
$result = $mysqli->query($query);
if ($result === false) {
die("쿼리가 실패했습니다: " . $mysqli->error);
}
// 결과 세트에 반복하십시오,사용 lengths 각 필드의 바이트 길이를 얻으십시오
while ($row = $result->fetch_row()) {
// $result->lengths 현재 행의 모든 필드의 길이 배열입니다.
$lengths = $result->lengths;
// 예를 들어, 얻으십시오 large_text_column 필드 길이(그것이 두 번째 필드라고 가정하십시오)
$textLength = $lengths[1];
// 길이를 통해 필드의 처리를 제어하십시오
$largeText = substr($row[1], 0, $textLength);
// 여기 괜찮아요 $largeText 추가 처리를하십시오,예를 들어, 파일에 쓰기,또는 스트리밍
echo "ID: " . $row[0] . " - 텍스트 길이: " . $textLength . "\n";
}
$result->free();
$mysqli->close();
?>
문자열 길이 계산의 추가 오버 헤드를 피하면서 현재 라인의 각 필드의 바이트 길이를 $ 결과-> 길이를 통해 얻습니다.
큰 텍스트 필드의 경우, $ 길이를 직접 사용하면 문자 인코딩 차이로 인해 부정확 한 길이 판단을 피하기 위해 데이터 길이를 정확하게 읽을 수 있습니다.
Substr 과 같은 기능을 결합하여 더 미세한 메모리 관리 및 데이터 슬라이싱을 수행 할 수 있습니다.
부패하지 않은 쿼리 사용 : 특히 큰 결과 세트의 경우, 부패하지 않은 쿼리 ( mysqli_use_result )를 사용하면 메모리 사용량을 줄이고 $ 길이 로 더 잘 작동 할 수 있습니다.
불필요한 데이터 전송을 피하십시오 : 전송 압력을 줄이기 위해 필요한 필드 만 쿼리하십시오.
대형 필드 스트리밍 : 블로브 또는 큰 텍스트를 처리 할 때 일회성 로딩이 아닌 스트리밍을 고려하십시오.
MySQLI_RESULT :: $ 길이는 PHP가 MySQL을 운영 할 때 상세하지만 매우 유용한 속성입니다. 특히 대규모 데이터 쿼리 결과를 처리 할 때 데이터 길이와 메모리 할당을 정확하게 제어하고 프로그램 성능을 향상시킬 수 있습니다. 부패하지 않은 쿼리 및 스트리밍 처리로 장점을 더 잘 재생할 수 있습니다.