먼저 PHP 릴리스 메모리에서 설정이 해제됩니까?
먼저 예를 살펴보겠습니다.
var_dump(memory_get_usage()); $a = "laruence"; var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage());
출력(다른 개인용 컴퓨터에서는 시스템, PHP 버전 및 로드된 확장 프로그램에 따라 다를 수 있음) 서로 다름):
int(90440) int(90640) int(90472
알아차림 90472-90440=32이므로 다양한 결론이 나옵니다. 어떤 사람들은 PHP의 unset이 실제로 메모리를 해제하지 않는다고 하고, 어떤 사람들은 PHP의 unset만 메모리만 정말 무료일 것이라고 말합니다. 큰 변수(많은 수의 문자열, 큰 배열)이 릴리스되면 어떤 사람들은 PHP 수준에서 메모리를 논의하는 것이 의미가 없다고 말하기도 합니다.
그러면 이 32 바이트는 어디로 갔을까요?
이 질문에 대답하기 위해 저는 두 가지 측면에서 시작하겠습니다:
이 32바이트는 어디로 갔습니까?
우선 생각을 깨야 합니다. PHP는 C 언어와는 다릅니다. 메모리 할당은 호출을 통해서만 발생합니다.
즉, PHP에는 우리가 볼 수 없는 메모리 할당 프로세스가 많이 있습니다.
예를 들면 다음과 같습니다.
$a = "laruence";
암시적 메모리 할당 지점은 다음과 같습니다.
1. 변수에 메모리를 할당합니다. 이름을 지정하고 심볼 테이블에 저장합니다
2. 변수 값에 메모리를 할당합니다
그러니 겉모습만 보지 마세요.
둘째,PHP의 unset이 실제로 메모리를 해제할 것이라는 점을 의심하지 마세요(물론) , 또한 참조와 계산을 결합하려면 PHP 원리(변수 분리/참조)에 대한 심층적인 이해를 위해 이전 기사를 참조하십시오. 그러나 이번 릴리스는 C 프로그래밍 의미의 릴리스가 아니며 다시 전달되지 않습니다.
PHP의 경우 메모리 할당을 위해 C 언어와 유사한 메모리 관리 API 세트를 제공합니다. 이러한 API는 PHP에서 이러한 API를 통해 내부적으로 관리됩니다. emalloc은 메모리를 신청하는데, PHP는 단순히 OS에 메모리를 요청하는 것이 아니라, OS에 큰 메모리 블록을 요청한 후, 이런 방식으로 메모리를 신청하는 로직이 있을 때 그 일부를 신청자에게 할당합니다. , OS에 메모리를 요청할 필요가 없습니다. 메모리를 적용하고 빈번한 시스템 호출을 피하세요.
예를 들어 다음 예는
int(262144)
int(262144)
int(262144
즉, 변수를 정의할 때
다음 코드를 읽으면 이해할 수 있습니다.
출력:string(43) "I am php.cn" int(90808) //赋值前 int(90976) int(90808) //是的, 内存正常释放90808-90808 = 0, 즉, 이 32바이트는 출력 함수 점유(엄밀히 말하면 출력 헤더에 의해 점유됨)증가만 하고 감소하지 않는 배열코드는 다음과 같습니다.
Hashtable은 PHP의 핵심 구조입니다. (Hashtable을 이해하려면 내 이전 기사를 참조하세요. -PHP 배열(순회 순서)에 대한 심층적인 이해, 배열도 그녀로 표현되며 기호 테이블도 연관 배열입니다. 다음 코드의 경우:
코드 복사var_dump("I am www.php.cn"); var_dump(memory_get_usage()); $array = array_fill(1, 100, "laruence"); foreach ($array as $key => $value) { ${$value . $key} = NULL; } var_dump(memory_get_usage()); foreach ($array as $key=> $value) { unset(${$value . $key}); } var_dump(memory_get_usage());100개의 변수를 정의한 다음 Unset을 눌렀습니다. 출력을 살펴보겠습니다.string(43) "I am php.cn" int(93560) int(118848) int(104448
와, 왜 이렇게 메모리가 적나요?이것은 Hashtable의 경우 정의할 때 불가능하기 때문입니다. 알 수 없는 개인을 저장하기 위해 한 번에 충분한 메모리 블록을 할당하므로 PHP는 초기화 중에 메모리 블록의 작은 부분만 HashTable에 할당한 다음 충분하지 않을 때 용량을 확장하기 위해 크기를 조정합니다. 반면, Hashtable은 확장만 가능하고 축소는 불가능합니다. 위의 예에서는 100개의 변수를 저장했을 때 심볼 테이블이 부족하여 이 100개의 변수를 차례로 해제하면 메모리가 부족해집니다. 변수가 차지했던 메모리가 해제됐는데(118848~104448) 심볼 테이블이 줄어들지 않아서 심볼 테이블 자체가 차지하는 메모리가 적어지네요...
이제 PHP의 메모리 관리에 대한 사전 이해가 되셨나요? ?위 내용은 unset이 PHP에서 메모리를 해제하면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

phpsessionscanstorestrings, 숫자, 배열 및 객체 1.Strings : TextDatalikeUsernames.2.numbers : integorfloatsforcounters.3.arrays : listslikeshoppingcarts.4.objects : complexStructuresThatareserialized.

세션 재생은 세션 고정 공격의 경우 사용자가 민감한 작업을 수행 할 때 새 세션 ID를 생성하고 이전 ID를 무효화하는 것을 말합니다. 구현 단계에는 다음이 포함됩니다. 1. 민감한 작업 감지, 2. 새 세션 ID 생성, 3. 오래된 세션 ID 파괴, 4. 사용자 측 세션 정보 업데이트.

PHP 세션은 응용 프로그램 성능에 큰 영향을 미칩니다. 최적화 방법은 다음과 같습니다. 1. 데이터베이스를 사용하여 세션 데이터를 저장하여 응답 속도를 향상시킵니다. 2. 세션 데이터 사용을 줄이고 필요한 정보 만 저장하십시오. 3. 비 차단 세션 프로세서를 사용하여 동시성 기능을 향상시킵니다. 4. 사용자 경험과 서버 부담의 균형을 맞추기 위해 세션 만료 시간을 조정하십시오. 5. 영구 세션을 사용하여 데이터 읽기 및 쓰기 시간의 수를 줄입니다.

phpsessionsareser-side, whilecookiesareclient-side.1) sessions stessoredataontheserver, andhandlargerdata.2) cookiesstoredataonthecure, andlimitedinsize.usesessionsforsensitivestataondcookiesfornon-sensistive, client-sensation.

phpidifiesauser의 sssessionusessessioncookiesandssessionids.1) whensession_start () iscalled, phpgeneratesauniquessessionStoredInacookienamedPhpsSessIdonSeuser 'sbrowser.2) thisidallowsphptoretrievessessionDataTromServer.

PHP 세션의 보안은 다음 측정을 통해 달성 할 수 있습니다. 1. Session_REGENEREAT_ID ()를 사용하여 사용자가 로그인하거나 중요한 작업 일 때 세션 ID를 재생합니다. 2. HTTPS 프로토콜을 통해 전송 세션 ID를 암호화합니다. 3. 세션 _save_path ()를 사용하여 세션 데이터를 저장하고 권한을 올바르게 설정할 보안 디렉토리를 지정하십시오.

phpsessionfilesarestoredInTheRectorySpecifiedBysession.save_path, 일반적으로/tmponunix-likesystemsorc : \ windows \ temponwindows.tocustomizethis : 1) austession_save_path () toSetacustomDirectory, verlyTeCustory-swritation;


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.
