>  기사  >  백엔드 개발  >  PHP die()와 Exit()의 차이점에 대한 자세한 예

PHP die()와 Exit()의 차이점에 대한 자세한 예

墨辰丷
墨辰丷원래의
2018-05-29 17:46:361850검색

php에서 die()와exit()의 실제 차이점은 무엇입니까? Baidu에서 die는 메모리 종료 및 해제를 의미하고, 종료는 메모리 해제를 의미하지 않는다는 것을 알았습니다. 이것이 실제로 필요한 경우인가요?

온라인에서 다이와 종료 기능의 차이점을 검색하면 대부분의 "표준 답변"에서는 다이가 종료되고 메모리가 해제되고 종료가 종료되지만 메모리는 해제되지 않는다고 말합니다.

이 설명은 분명히 잘못된 것입니다. PHP 매뉴얼에는 이미 "die —exit()와 동일합니다. 이 두 가지는 별칭일 뿐이며 그 외에는 완전히 동일합니다."

하지만 나는 여전히 호기심이 있었고 PHP가 이 "별칭"을 어떻게 처리하는지 보기 위해 소스 코드에서 단서를 찾기로 결정했습니다.

우선 분명히 해두겠습니다. Die와 Exit는 둘 다 "언어 구조"이지 함수가 아닙니다. 인터넷에는 반환 값이 있는 것은 함수이고 반환 값이 없는 것은 함수라고 말하는 사람들도 많습니다. 많은 초보자는 언어 구조를 이해할 수 없습니다. 일반인의 관점에서 보면 언어 구조는 문법 자체의 기호로 이해될 수 있습니다. +, -, *, / 같은 것도 언어 구조이고, if, else, for, while 등은 모두 언어 구조입니다. 문법 자체의 일부입니다. 모든 언어에는 이러한 기능이 있습니다. 컴퓨터가 +를 볼 때 추가해야 한다고 생각하지 않기 때문입니다. 이를 위해서는 컴파일러가 이를 CPU가 인식할 수 있는 명령어 세트인 기계어 코드로 변환해야 합니다.

PHP가 소스 코드를 실행할 때 전체 프로세스는 먼저 소스 코드의 echo 및 if와 같은 언어 구조를 zend_언어_scanner.l에 정의된 T_ECHO 및 T_IF와 같은 토큰으로 변환하고 소스 코드에서 공백을 제거하는 것입니다. 프로그램 논리와 관련이 없는 이러한 문자를 주석 처리합니다. , 몇 가지 짧은 표현이 형성되는데, 이것이 어휘 분석 단계이다. 그런 다음 이러한 토큰은 zend_vm_opcodes.h에 정의된 대로 op 코드로 변환됩니다. 그런 다음 이 작업 코드를 하나씩 실행하십시오.

위 내용은 PHP의 컴파일과 실행 과정, 그리고 언어 구조의 정의를 대략적으로 설명하고 있습니다. 요점을 살펴 보겠습니다.

또한 PHP에는 implode 및 Join과 같은 많은 별칭 함수가 있다는 것을 기억해야 합니다. 별칭 함수든 별칭 언어 구조든 실제 효과 측면에서는 동일하지만 소스 코드 처리 방법은 확실히 다릅니다.

먼저 이 별칭 언어 구조가 어떻게 처리되는지 살펴보고 나중에 별칭 함수를 살펴보겠습니다.

zend_언어_parser.c는

#define T_EXIT 300

매크로를 정의하고

enum yytokentype {
…
T_EXIT = 300,
….
}

을 포함하는 열거형도 정의합니다. 여기서 T_EXIT 토큰의 코드는 300입니다.

다음 코드 줄이 포함된 zend_언어_scanner.l을 살펴보세요.

<ST_IN_SCRIPTING>”exit” {
return T_EXIT;
}
<ST_IN_SCRIPTING>”die” {
return T_EXIT;
}

분명히 PHP가 어휘 분석을 수행할 때 종료 또는 종료 여부에 관계없이 T_EXIT 토큰을 반환합니다. 여기에서 우리는 죽고 나가는 것과 PHP의 내부 처리가 정확히 동일하다는 것을 증명할 수 있습니다.

다음 PHP 코드를 사용하여 확인할 수도 있습니다.

<?php
var_dump(token_get_all(“<?php die;exit;?>”));

반환된 결과에서 die 및exit에 해당하는 토큰 코드는 모두 300입니다.

이제 die와 Exit 문제에 관해서는 이름만 다를 뿐 효과는 동일하다는 것을 모두가 확인할 수 있어야 한다고 생각합니다. 소위 메모리를 제거하거나 제거하지 않는 문제는 없습니다.

PHP 매뉴얼: die()exit()와 동일합니다.

설명: die()와exit()는 모두 스크립트 실행을 종료하는 함수입니다. 실제로 두 이름인exit와 die는 동일한 함수를 가리키며 die()는exit()함수의 별칭입니다. 이 함수는 프로그램이나 문자열에 의해 반환된 값일 수 있는 하나의 매개 변수만 허용합니다. 그렇지 않으면 매개 변수를 입력할 수 없으며 결과는 반환 값이 아닙니다.

참고: 둘은 동일하지만 일반적인 사용에는 미묘한 선택성이 있습니다. 예를 들면 다음과 같습니다.
exit 및 die 함수에 전달된 값이 0이면 일반적으로 Exit()라는 이름을 사용하여 스크립트 실행을 조기에 종료한다는 의미입니다.

echo "1111";
exit(0);
echo "2222";
//22222不会被输出,因为程序运行到exit(0)时,脚本已经被提前终止,“马上断气”。

프로그램 오류가 발생하면 문자열을 전달할 수 있습니다. 이 문자열은 일반적으로 die()라는 이름을 사용하여 시스템 터미널에 그대로 출력됩니다.

$fp=fopen("./readme.txt","r") or die("不能打开该文件");

이 경우 fopen 함수가 호출되어 부울 값 false를 반환하면 die()는 즉시 스크립트를 종료하고 전달된 문자열을 즉시 인쇄합니다. 난 죽는다."

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다. H 관련 권장 사항:

Php 推荐+MySQL 구현 메시지 퀘스트 방법 분석


프런트 데스크 HTML의 TEXTAREA에서 줄을 변경하는 방법과 행을 변경하여

Php 배경 에서 가져오는 방법을 수정하는 방법


mysql 저장 프로시저 및
PHP

Call MYSQL 저장 프로시저 인스턴스에 대한 자세한 설명

🎜🎜🎜

위 내용은 PHP die()와 Exit()의 차이점에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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