백엔드 개발 PHP 튜토리얼 PHP 기본 분석 : Shengcai Forum ww7349cow 일본 소 젖돌 작성 시 소 소의 복수형 복사에 대해

PHP 기본 분석 : Shengcai Forum ww7349cow 일본 소 젖돌 작성 시 소 소의 복수형 복사에 대해

Jul 29, 2016 am 08:53 AM
php

기술적 한계에 도달하고 싶다면 현재 일어나고 있는 일과 그 이유를 아는 것이 학습 과정입니다.

오늘은 PHP의 기본 쓰기 중 복사(쓰기 중 분할이라고도 함)에 대해 논의하겠습니다.

먼저 코드를 살펴보겠습니다.
PHP 기본 분석 : Shengcai Forum ww7349cow 일본 소 젖돌 작성 시 소 소의 복수형 복사에 대해

두 코드의 출력 결과는 모두가 알고 있겠지만 오늘은 무슨 일이에요.

아래 그림은 PHP 저장변수의 구조입니다. (설명의 편의를 위해 주석을 가미했습니다.) Zend 디렉토리에 zend.h가 있습니다.

보시다시피 구조체에는 변수 값에 대한 정보, 구조체를 가리키는 변수 개수, 변수 유형, 참조 변수인지 등에 대한 정보가 저장됩니다.
PHP 기본 분석 : Shengcai Forum ww7349cow 일본 소 젖돌 작성 시 소 소의 복수형 복사에 대해

그럼 첫 번째 인쇄는 어떻게 되나요? 변수정보는 구조체에 들어가며 상관관계는 다음과 같습니다.
PHP 기본 분석 : Shengcai Forum ww7349cow 일본 소 젖돌 작성 시 소 소의 복수형 복사에 대해

$name = '저녁 8시 30분';
$myName = $name;

이것은 $name과 $myName이 구조를 공유할 때 refcount__gc는 2입니다.

이 프로세스에서 $myName = $name이 적극적으로 두 구조가 되지 않음을 발견했습니다(이 역시 내부 구현으로 간주됩니다). PHP의 일종의 최적화로, 하나의 구조만 사용하여 메모리를 절약합니다.

그럼 $myName = 'gzchen';으로 코드가 실행되면 구조는 어떻게 변경되나요? 첫 번째 출력에서는 두 개의 변수가 구조를 공유하고 있기 때문에 이때 변수 중 하나를 변경하면 두 값이 함께 변경되는 걸까요? 순전히 구조의 논리로만 보면, 결국 모든 사람이 이 구조를 공유하는 것이 가능합니다.

그럼 두 번째 인쇄에서는 어떤 일이 발생하는지 살펴보겠습니다.
PHP 기본 분석 : Shengcai Forum ww7349cow 일본 소 젖돌 작성 시 소 소의 복수형 복사에 대해

$name과 $myName은 동시에 변경되지 않습니다. 'gzchen'으로 변경하되, 두 구조는 각각 $name 및 $myName에 해당합니다.

이것은 COW(기록 중 복사)로 인해 $myName = $name이 할당되면 두 개의 구조로 분할되지 않지만 그 중 하나를 다시 쓰면 효과가 발생합니다. 일종의 느린 복제(느린 분할이라고도 함)가 사용됩니다.

의사 코드는 다음과 같습니다.
PHP 기본 분석 : Shengcai Forum ww7349cow 일본 소 젖돌 작성 시 소 소의 복수형 복사에 대해

다른 코드를 살펴보겠습니다.
PHP 기본 분석 : Shengcai Forum ww7349cow 일본 소 젖돌 작성 시 소 소의 복수형 복사에 대해

출력은 'b ', 중간에 일어나는 일 무엇?

실제로 foreach 순회 프로세스 중에 $arr(원래 배열)은 직접 조작되지 않지만 $arr는 $arrcopy에 복사됩니다(실제로는 복사본이므로 대신 $arrcopy를 사용합니다). , foreach는 순회 과정에서 항상 $arrcopy를 수행합니다. 일반적인 프로세스는 다음과 같습니다.

PHP 기본 분석 : Shengcai Forum ww7349cow 일본 소 젖돌 작성 시 소 소의 복수형 복사에 대해

실제로는 위의 예제와 동일하다는 것을 알 수 있습니다. 시작 부분($arr = $arrcopy)은 여전히 ​​구조를 공유했지만 $arr[$k] = $v가 다시 할당되고 쓰기 중 복사가 발생하여 구조가 분할되었습니다.

앞서 언급했듯이 foreach는 $arrcopy를 수행하므로 $arr의 구조 포인터가 첫 번째 위치에 고정됩니다(구조가 다르기 때문에 $arrcopy는 $arr에 동기적으로 값을 할당할 수 없습니다.).

사실 이런 기술은 보통 인터뷰에서만 쓰인다. 결국 일상적인 전개에서 이런 글쓰기 방식을 사용하는 친구들은 당분간 돈이 아니다. '글을 쓰면서 복사하기'가 있다는 것만 알아두면 된다.

위 내용은 PHP의 기본 분석을 소개합니다. 소 및 PHP 내용을 포함하여 글을 작성할 때 소를 복사하는 것과 관련하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP와 Python : 다른 패러다임이 설명되었습니다 PHP와 Python : 다른 패러다임이 설명되었습니다 Apr 18, 2025 am 12:26 AM

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP의 지속적인 사용 : 지구력의 이유 PHP의 지속적인 사용 : 지구력의 이유 Apr 19, 2025 am 12:23 AM

여전히 인기있는 것은 사용 편의성, 유연성 및 강력한 생태계입니다. 1) 사용 편의성과 간단한 구문은 초보자에게 첫 번째 선택입니다. 2) 웹 개발, HTTP 요청 및 데이터베이스와의 우수한 상호 작용과 밀접하게 통합되었습니다. 3) 거대한 생태계는 풍부한 도구와 라이브러리를 제공합니다. 4) 활성 커뮤니티와 오픈 소스 자연은 새로운 요구와 기술 동향에 맞게 조정됩니다.

session_start ()가 여러 번 호출되면 어떻게됩니까? session_start ()가 여러 번 호출되면 어떻게됩니까? Apr 25, 2025 am 12:06 AM

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

IIS 및 PHP의 호환성 : 깊은 다이빙 IIS 및 PHP의 호환성 : 깊은 다이빙 Apr 22, 2025 am 12:01 AM

IIS 및 PHP는 호환 가능하며 FastCGI를 통해 구현됩니다. 1. IIS 구성 파일을 통해 .php 파일 요청을 FastCGI 모듈로 전달합니다. 2. FASTCGI 모듈은 PHP 프로세스를 시작하여 요청을 처리하여 성능과 안정성을 향상시킵니다. 3. 실제 응용 프로그램에서는 구성 세부 사항, 오류 디버깅 및 성능 최적화에주의를 기울여야합니다.

session_start () 함수의 중요성은 무엇입니까? session_start () 함수의 중요성은 무엇입니까? May 03, 2025 am 12:18 AM

session_start () iscrucialinphpformanagingUsersessions.1) itiniteSanewsessionifnoneexists, 2) ResumesAnxistessions, and3) setSasessionCookieForContInuityAcrosrequests, enablingplicationsirecationSerauthenticationAndpersonalizestContent.

작곡가 : AI를 통한 PHP 개발 지원 작곡가 : AI를 통한 PHP 개발 지원 Apr 29, 2025 am 12:27 AM

AI는 작곡가 사용을 최적화하는 데 도움이 될 수 있습니다. 특정 방법에는 다음이 포함됩니다. 1. 종속성 관리 최적화 : AI는 종속성을 분석하고 최상의 버전 조합을 권장하며 충돌을 줄입니다. 2. 자동화 된 코드 생성 : AI는 모범 사례를 준수하는 composer.json 파일을 생성합니다. 3. 코드 품질 향상 : AI는 잠재적 인 문제를 감지하고 최적화 제안을 제공하며 코드 품질을 향상시킵니다. 이러한 방법은 기계 학습 및 자연어 처리 기술을 통해 구현되어 개발자가 효율성과 코드 품질을 향상시킬 수 있도록 도와줍니다.

Laravel 사용 : PHP로 웹 개발을 간소화합니다 Laravel 사용 : PHP로 웹 개발을 간소화합니다 Apr 19, 2025 am 12:18 AM

Laravel은 다음을 포함하여 웹 개발 프로세스를 최적화합니다. 1. 라우팅 시스템을 사용하여 URL 구조를 관리합니다. 2. 블레이드 템플릿 엔진을 사용하여보기 개발을 단순화하십시오. 3. 대기열을 통해 시간이 많이 걸리는 작업을 처리합니다. 4. eloquentorm을 사용하여 데이터베이스 작업을 단순화하십시오. 5. 모범 사례를 따라 코드 품질과 유지 관리를 향상시킵니다.

PHP 및 IIS : 함께 일하게합니다 PHP 및 IIS : 함께 일하게합니다 Apr 21, 2025 am 12:06 AM

IIS에서 PHP 구성 및 실행에는 다음 단계가 필요합니다. 1) PHP 다운로드 및 설치, 2) IIS 구성 및 FASTCGI 모듈 추가, 3) 응용 프로그램 풀 생성 및 설정 4) 웹 사이트를 만들고 응용 프로그램 풀에 바인딩합니다. 이러한 단계를 통해 스케일링을 구성하고 성능을 최적화하여 Windows 서버에 PHP 응용 프로그램을 쉽게 배포하고 응용 프로그램 안정성 및 효율성을 향상시킬 수 있습니다.

See all articles