>  기사  >  백엔드 개발  >  PHP에서 문자열의 크기는 얼마나 됩니까?

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

Barbara Streisand
Barbara Streisand원래의
2024-11-02 21:45:02171검색

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가 할당하는 만큼의 메모리를 활용할 수 있습니다(여전히 실제 및 시스템별 제약 조건이 적용됨).

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

<code class="php">// 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));</code>

위 내용은 PHP에서 문자열의 크기는 얼마나 됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.