"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PHP에서 문자열의 크기는 얼마나 됩니까?

PHP에서 문자열의 크기는 얼마나 됩니까?

2024-11-09에 게시됨
검색:728

How Large Can a String Be in PHP?

PHP에서 문자열 길이의 상한은 얼마입니까?

쿼리:
좀 더 설명해 주실 수 있나요? PHP의 문자열 저장 용량 제한은 무엇입니까? 측정해 보았으나 시스템 메모리(2GB)가 테스트에 적합한지 확신할 수 없습니다. 미리 정의된 한도가 있나요? 문자열이 이 임계값을 초과하면 어떤 작업이 발생합니까(연결 또는 오류)?

응답:
PHP.net 문서에 따르면 PHP 7.0.0에서는 문자열 길이 제한이 제거되었습니다. 64비트 빌드용. 32비트 빌드 및 이전 버전의 경우 문자열은 최대 2GB(2147483647바이트)에 도달할 수 있습니다.

PHP 5.x에서는 문자열이 231-1바이트로 제한되었습니다. 내부 코드는 32비트 부호 있는 정수로 길이를 추적했습니다.

추가 고려 사항:
file_get_contents()와 같은 함수를 사용하여 전체 파일 내용을 로드할 수 있습니다. 그러나 모든 변수에 대한 PHP 스크립트의 전체 메모리 할당은 개별 문자열 변수의 길이를 제한합니다.

메모리 제한 지시어:
php.ini 구성 파일의 memory_limit 지시어는 이를 설정합니다. 한계. 기본값은 PHP 5.2에서는 128MB이고 이전 버전에서는 8MB입니다.

php.ini에서 memory_limit가 설정되지 않은 경우 기본값은 PHP 바이너리의 컴파일된 값으로 설정되며, 이는 사용자 정의 기본값으로 PHP를 다시 컴파일하여 수정할 수 있습니다. .

php.ini에서 memory_limit를 -1로 설정하면 검사가 비활성화되고 스크립트가 OS가 할당하는 만큼의 메모리를 활용할 수 있습니다(여전히 실용적이고 시스템별 제약 조건).

테스트 예:
다음 코드는 메모리 사용량 및 문자열 할당 제한을 테스트하는 방법을 보여줍니다.

// Limit memory usage to 1MB
ini_set('memory_limit', 1024*1024);

// Basic operation uses about 768KB
printf("memory: %d\n",  memory_get_usage(true));

$str = str_repeat('a',  255*1024);
echo "Allocated string of 255KB\n";

// All 1MB of memory has been allocated
printf("memory: %d\n",  memory_get_usage(true));

// Exceeding the limit causes a fatal error
$str = str_repeat('a',  256*1024);
echo "Allocated string of 256KB\n";
printf("memory: %d\n",  memory_get_usage(true));
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3