IT

PHP의 die()와 exit()의 차이점은 무엇입니까?

itgroup 2023. 1. 31. 20:45
반응형

PHP의 die()와 exit()의 차이점은 무엇입니까?

die() ★★★★★★★★★★★★★★★★★」exit()PHP ★★★★★★★★★★★★★★★★★★★?

둘 다 같은 기능을 가지고 있다고 생각하지만, 둘 다 뭔가 다른 것이 있는지는 의문입니다.그것은 무엇일까요?

차이가 없다. 그들은 같다.

PHP 매뉴얼:

주의: 이 언어 구성은 와 동일합니다.

PHP 매뉴얼:

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

원점의 차이

PHP와 PHP의 차이는 그 기원입니다.


기능적으로 동등한

die() 등가함수입니다.

PHP 매뉴얼

PHP 매뉴얼:

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

PHP 매뉴얼:

주의: 이 언어 구성은 와 동일합니다.

함수 별칭 목록을 위한 PHP 설명서:

die 마스터 기능의 에일리어스입니다


다른 언어에서는 다르다

die() 다른 언어에서는 다르지만 PHP에서는 동일합니다.

또 다른 PHP의 외침:

C와 Perl의 코더로서 다음과 같이 대답할 준비가 되어 있었습니다.「왜 exit()는 숫자 종료 상태로 프로그램을 종료합니다.die()는 에러 메시지를 stderr에 출력하고 EX를 종료합니다.IT_FAILURE 상태"하지만 그때 우리가 PHP의 지저분한 구문 분석 영역에 있다는 것을 기억했다.

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

디자이너들은 분명히 "음, C에서 exit()를 빌리자"고 생각했습니다.Perl 사람들도 아마 Perl에서와 같이 die()를 가져가면 좋아할 것입니다.앗! 이제 두 개의 출구 기능이 있습니다!둘 다 문자열이나 정수를 인수로 사용하여 동일하게 만들 수 있도록 합시다.

결과적으로, 이것은 상황을 더 쉽게 만들지는 않았고, 단지 더 혼란스럽게 만들었다.C 및 Perl 코더는 exit()를 사용하여 정수 exit 값만 토스하고 die()를 사용하여 오류 메시지를 토스하고 장애 발생 시 종료합니다.초보자나 PHP 제1외국어 사용자는 아마도 "음, 두 개의 종료 함수, 어느 것을 사용하면 좋을까요?"라고 생각할 것입니다.매뉴얼에서는 exit()와 die()가 있는 이유를 설명하지 않습니다.

일반적으로 PHP는 이와 같은 기묘한 용장성을 많이 가지고 있습니다.다른 언어 배경을 가진 사람들에게 친절하게 대하려고 하지만, 그렇게 하는 동안 혼란스러운 용장성을 만들어냅니다.

앞에서 설명한 바와 같이 이들2개의 명령어는 동일한 파서토큰을 생성합니다.

그렇지만

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

저는 PHP 파서를 공부하지 않았지만, "d"로 시작하는 함수의 긴 목록과 "e"로 시작하는 함수의 짧은 목록이라면, "e"로 시작하는 함수의 이름을 조회하는 시간 패널티가 있을 것입니다.또한 기능명 전체를 확인하는 방법에 따라 다른 차이가 있을 수 있습니다.

PHP를 해석하기 위한 "완벽한" 환경과 다른 파라미터로 많은 요청을 하지 않는 한 측정할 수 있을지 의문입니다.그러나 PHP는 해석된 언어이기 때문에 차이가 있을 것입니다.

다이에 대한 PHP 설명서:

die : exit에 상당합니다.

할 도 있어요.die;exit; - 패런 유무

[ ]를 선택했을 die()에 걸쳐서exit()는, 를 입력하는데 가 있습니다 ) 、 분 ,문 ; , ; an an an an an an;- )

여기 꽤 흥미로운 것이 있습니다.일일 ~일도 although although although although 。exit() ★★★★★★★★★★★★★★★★★」die() 가,, 가 are,die() 에 의해 접속이 종료합니다. exit() 는 접속을 닫지 않습니다.

die():

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

exit():

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

결과:

die():

HTTP/1.1 304 Not Modified 
Connection: close

exit():

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

당신의 프로젝트에 이 점을 고려해야 할 필요가 있습니다.

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

다른 모든 정답들이 말하듯이die ★★★★★★★★★★★★★★★★★」exit★★★★★★★★★★★★★★★★★★★.

때 실행을 때 하는 만,exit;의 문제(db에 수 , 에 쓸 수 등로 인해 는, 「」, 「DB」(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★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

기능적으로는 동일하지만, 다음의 시나리오에서는 코드를 판독할 수 있도록 사용하고 있습니다.

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

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

오류가 없고 실행을 중지해야 할 경우 exit()를 사용합니다.

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

https://3v4l.org 에서의 이 출력은 다이와 종료가 기능적으로 동일함을 나타내고 있습니다.여기에 이미지 설명 입력

페이지에는 다음과 같이 되어 있습니다.dieexit그래서 똑같습니다.한음

API 정리 등의 이유로 이름이 변경된 함수가 있으며 이전 이름은 하위 호환성을 위해 별칭으로만 유지됩니다.이러한 종류의 에일리어스를 사용하는 것은 좋지 않습니다.이러한 에일리어스는 구식이나 이름 변경을 수반할 수 있기 때문에, 포터블 스크립트가 되지 않게 됩니다.

편집증이라고 '망상적 '망상적', '망상적', '망상적', '망상적'은 수도 있어요.die장래에 대비하고 있습니다.

글에서는 다르게 시사하고 있지만 기본적으로는 동일합니다.

기능적으로는 동일합니다.그래서 어떤 것을 사용할지 선택하는 것은 전적으로 개인적인 취향이다.영어에서는 의미론적으로 다르다.다이는 음성이에요클라이언트에 JSON 데이터를 반환하고 프로그램을 종료하는 함수를 가지고 있을 때 이 함수를 jsonDie()라고 부르면 끔찍할 수 있으며, jsonExit()이라고 부르는 것이 더 적절합니다.그래서 저는 항상 다이 대신 출구를 이용합니다.

질문을 봤을 때 제가 아는 바로는

거기에는 "PHP에서는 헤더 출력에 뚜렷한 차이가 있습니다.다음 예에서는 exit()와 die()의 차이를 보여주기 위해 다른 헤더를 사용하기로 선택했으며, 이는 중요하지 않습니다."라고 말하고 (개인적으로) 테스트했습니다.

exit() 함수와 die() 함수의 결과는 항상 동일합니다.단, 에일리어스 매뉴얼페이지(http://php.net/manual/en/aliases.php),)에서 설명한 바와 같이 die() 함수가 exit 함수를 호출한다고 합니다.다음과 같이 하드코드가 되어 있다고 생각합니다.

function die($msg){
  exit($msg);
}

이는 소규모, 중규모 및 대규모 프로젝트에서는 성능 문제가 되지 않지만 프로젝트에 수십억 곱하기 수십억 프로세스가 있는 경우 매우 중요한 성능 최적화 상태가 발생합니다.

그러나 대부분의 사람들은 이것이 문제라고 생각하지 않습니다. 왜냐하면 그렇게 많은 프로세스를 가지고 있다면 기능이 마스터인지 별칭인지보다 더 많은 문제를 생각해야 하기 때문입니다.

단, 정확한 답은 마스터 함수는 항상 에일리어스보다 빠릅니다.

마지막으로 Alias 매뉴얼페이지에 다이를 더 이상 사용할 수 없다고 표시되어 있습니다.이것은 에일리어스일 뿐이며 폐지됩니다.

이러한 종류의 에일리어스를 사용하는 것은 좋지 않습니다.이러한 에일리어스는 구식이나 이름 변경을 수반할 수 있기 때문에, 포터블 스크립트가 되지 않게 됩니다.이 목록은 오래된 스크립트를 새로운 구문으로 업그레이드하려는 사용자를 지원하기 위해 제공됩니다.

적어도 스크립트에서 주목한 것은 exit()가 현재 실행 중인 스크립트를 중지하고 모든 호출 스크립트에 제어를 전달하는 반면 die는 트랙에서 php를 중지한다는 것입니다.그게 꽤 큰 차이점이라고 말할 수 있겠니?

소리는 비슷하지만 exit()에서는 PHP 스크립트의 종료 코드를 설정할 수도 있습니다.

보통 이 작업은 필요하지 않지만 콘솔 PHP 스크립트를 작성할 때 스크립트가 모든 작업을 올바르게 완료했는지 Bash와 함께 확인할 수 있습니다.

그런 다음 exit()를 사용하여 나중에 캡처할 수 있습니다.그러나 Die()는 이를 지원하지 않습니다.

Die()는 항상 코드 0으로 존재합니다.따라서 기본적으로 die() 명령어는 다음을 수행합니다.

<?php
echo "I am going to die";
exit(0);
?>

즉, 다음과 같습니다.

<?php
die("I am going to die");
?>

언급URL : https://stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php

반응형