[php] PHP에서 die ()와 exit ()의 차이점은 무엇입니까?

PHP에서 die()exit()기능 의 차이점은 무엇입니까 ?

둘 다 동일한 기능을 가지고 있다고 생각하지만 둘 다에 다른 것이 있는지 의심합니다 … 무엇입니까?



답변

차이점은 없습니다. 동일합니다.

PHP 매뉴얼 exit:

참고 :이 언어 구문은와 동일합니다 die().

PHP 매뉴얼 die:

이 언어 구성은와 동일합니다 exit().


답변

오리진의 차이점

PHP die()exit()PHP 의 차이점 은 그 기원 입니다.


기능적으로 동등한

die()하고 exit()있는 동일한 기능.

PHP 매뉴얼

PHP 매뉴얼 die:

이 언어 구성은와 동일합니다 exit().

PHP 매뉴얼 exit:

참고 :이 언어 구문은와 동일합니다 die().

함수 별칭 목록에 대한 PHP 매뉴얼 :

die 마스터 함수의 별명입니다. exit()


다른 언어의 다른

die()하고 exit()있는 다른 언어로 다른 하지만 PHP에서 그들은 동일합니다.

에서 또 다른 PHP의 호언 장담 :

… C 및 Perl 코더로서, “왜 exit ()는 숫자 종료 상태로 프로그램을 구제하고 die ()는 오류 메시지를 stderr에 출력하고 EXIT_FAILURE 상태로 종료합니다. ” 그러나 나는 우리가 PHP의 지저분한 구문 세계에 있다는 것을 기억했습니다.

PHP에서 exit ()와 die ()는 동일합니다.

디자이너들은 분명히 “흠, C에서 exit ()를 빌려 보자 . 그리고 Perl 사람들은 아마도 Perl에서와 같이 die ()를 가져 가면 아마 그것을 좋아할 것이다 . 죄송합니다! 우리는 두 개의 exit 함수를 가지고 있습니다! “문자열 또는 정수를 인수로 사용하여 동일하게 만들 수 있습니다!”

결과적으로 이것이 실제로 “더 쉬워 진”것이 아니라 더 혼란스러워 졌다는 것입니다. C 및 Perl 코더는 exit ()를 계속 사용하여 정수 종료 값만 던지고 die ()는 오류 메시지를 던지고 실패와 함께 종료합니다. 초보자와 제 1 언어로 PHP를 사용하는 사람들은 아마도 “음, 두 개의 종료 함수 중 어느 것을 사용해야합니까?” 매뉴얼에는 왜 exit () 및 die ()가 있는지 설명하지 않습니다.

일반적으로 PHP에는 이와 같이 이상한 중복이 많이 있습니다. 다른 언어 배경을 가진 사람들에게는 친절하지만, 그렇게하는 동안 혼란스러운 중복을 만듭니다.


답변

앞에서 언급했듯이이 두 명령은 동일한 파서 토큰을 생성합니다.

그러나

작은 차이가 있으며 이는 파서가 토큰을 반환하는 데 걸리는 시간입니다.

PHP 파서를 연구하지는 않았지만 “d”로 시작하는 긴 함수 목록이고 “e”로 시작하는 짧은 목록 인 경우 ” 이자형”. 전체 기능 이름을 확인하는 방법에 따라 다른 차이점이있을 수 있습니다.

PHP 구문 분석 전용 “완벽한”환경과 다른 매개 변수를 가진 많은 요청이 없다면 측정 할 수 없을 것입니다. 그러나 PHP는 통역 된 언어입니다.


답변

다이의 PHP 매뉴얼 :

die — 종료와 동일

Parens의 유무에 관계없이 die;동일한 방식으로 수행 할 수도 있습니다 exit;.

선택의 유일한 이점 die()이상은 exit(), 당신이 여분의 문자를 입력에 여분의 시간이 될 수 있습니다 😉


답변

다른 모든 정답으로 말한다, die그리고 exit동일 / 별칭이다.

스크립트가 예상되고 원할 때 스크립트 실행을 끝내고 싶을 때는 개인 협약이 있지만을 사용 exit;합니다. 그리고 일부 문제로 인해 실행을 종료해야 할 때 (db에 연결할 수 없거나 파일에 쓸 수 없음 등) die("Something went wrong.");스크립트를 “킬”하는 데 사용합니다.

exit를 사용할 때 :

header( "Location: http://www.example.com/" ); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit; // I would like to end now.

내가 죽을 때 :

$data = file_get_contents( "file.txt" );
if( $data === false ) {
    die( "Failure." ); // I don't want to end, but I can't continue. Die, script! Die!
}
do_something_important( $data );

이렇게하면 exit코드의 특정 지점에서 볼 때이 시점에서 논리가 여기서 끝나기 때문에 종료하고 싶다는 것을 알고 있습니다. 내가 볼 때 die실행을 계속하고 싶다는 것을 알고 있지만 이전 실행의 오류로 인해 할 수 없거나해서는 안됩니다.

물론 이것은 프로젝트에서만 작업 할 때만 작동합니다. 더 많은 사람들이있을 때 아무도 그들을 사용 하지 못하게 die하거나 exit내 관습에 맞지 않는 곳에서는 …


답변

여기 흥미로운 것이 있습니다. 비록 exit()die()동등한, die() 폐쇄 연결. 연결을 exit() 닫지 않습니다 .

die():

<?php
    header('HTTP/1.1 304 Not Modified');
    die();
?>

exit():

<?php
    header('HTTP/1.1 304 Not Modified');
    exit();
?>

결과 :

exit():

HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100

die():

HTTP/1.1 304 Not Modified
Connection: close

프로젝트를 위해 이것을 고려해야 할 경우를 대비하여.

크레딧 : https://stackoverflow.com/a/20932511/4357238


답변

기능 측면에서는 동일하지만 다음 시나리오에서 코드를 읽을 수 있도록 사용합니다.

오류가 발생하여 실행을 중지해야 할 경우 die ()를 사용하십시오.

예 :
die( 'Oops! Something went wrong' );

오류가없고 실행을 중지해야 할 경우 exit ()를 사용하십시오.

예 :
exit( 'Request has been processed successfully!' );