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 중국어 웹사이트의 기타 관련 기사를 참조하세요!