PHP の die() と exit() の本当の違いは何ですか? die はメモリを終了して解放することを意味し、exit はメモリを終了するが解放しないことを意味することをバイドゥで発見しました。これは本当に当てはまりますか?
die 関数と exit 関数の違いをオンラインで検索すると、ほとんどの「標準的な回答」では、die は終了してメモリを解放し、exit は終了するがメモリは解放しないと述べています。
この説明は明らかに間違っています。PHP マニュアルにはすでに「die — exit() と同等です。この言語構造は exit() と同等です。」と記載されています。この 2 つは単なるエイリアスであり、それ以外はまったく同じです。
しかし、私はまだ興味があったので、PHP がこの「エイリアス」をどのように処理するかを確認するためにソース コードから手がかりを探すことにしました。
まず、明確にしておきますが、Die と exit は両方とも「言語構造体」であり、関数ではありません。また、戻り値のあるものは関数であり、戻り値のないものは関数であると主張する人もいます。多くの初心者は言語の構造を理解できません。平たく言えば、言語の構造は文法そのものの記号として理解できるということです。 +、-、*、/ なども言語構造であり、if、else、for、while などもすべて言語構造です。文法自体の一部です。どの言語にもこれらの要素は含まれます。これは、コンピューターが + を見たときに、それを追加する必要があるとは考えないためです。これには、コンパイラがそれをマシンコード (CPU が認識できる命令セット) に変換する必要があります。
PHP がソース コードを実行するときのプロセス全体は、まずソース コード内の echo や if などの言語構造を、zend_ language_scanner.l で定義されている T_ECHO や T_IF などのトークンに変換し、ソース コード内のスペースを削除します。プログラム ロジックと関係のないこれらの文字をコメント アウトします。 、いくつかの短い式が形成されます。これが字句解析の段階です。これらのトークンは、zend_vm_opcodes.h で定義されている操作コードに変換されます。次に、これらの操作コードを 1 つずつ実行します。
上記は、PHPのコンパイルと実行のプロセス、および言語構造の定義を大まかに説明しています。本題に入りましょう。
PHP には、implode や join などのエイリアス関数が多数あることも覚えておく必要があります。エイリアス関数にしても、エイリアス言語の構造にしても、実際の効果という観点では同じですが、ソースコードの処理方法が決定的に異なります。
まず、このエイリアス言語構造がどのように処理されるかを見てから、後でエイリアス関数を見てみましょう。
zend_ language_parser.c はマクロ
#define T_EXIT 300
を定義し、また
enum yytokentype { … T_EXIT = 300, …. }
を含む enum も定義します。ここでは、T_EXIT トークンのコードが 300 であることがわかります。
これらのコード行が含まれている zend_ language_scanner.l を見てください。
<ST_IN_SCRIPTING>”exit” { return T_EXIT; } <ST_IN_SCRIPTING>”die” { return T_EXIT; }
明らかに、php が字句解析を行うとき、exit に遭遇したか、または die に遭遇したかに関係なく、T_EXIT トークンを返します。ここから、die と exit と PHP の内部処理がまったく同じであることが証明できます。
次の PHP コードを使用して判断することもできます:
<?php var_dump(token_get_all(“<?php die;exit;?>”));
返された結果の die と exit に対応するトークン コードは両方とも 300 です。
さて、dieとexitの問題ですが、名前が違うだけで効果は同じであることが皆さんも確認できると思いますが、いわゆるメモリをアンインストールするかアンインストールしないかという問題はありません。
PHP マニュアル: die() exit() と同等。
説明: die() と exit() はどちらもスクリプトの実行を終了する関数です。実際、exit と die の 2 つの名前は同じ関数を指し、die() は exit() 関数の別名です。この関数は、プログラムまたは文字列によって返される値であるパラメータを 1 つだけ受け入れます。あるいはパラメータを入力できず、結果は戻り値になりません。
参考: この 2 つは同じですが、通常の使用には微妙な選択性があります。例:
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 実装 メッセージキューメソッド分析🎜mysqlストアドプロシージャと🎜PHP🎜MYSQLストアドプロシージャインスタンスの呼び出し🎜🎜🎜🎜🎜の詳細説明🎜🎜🎜🎜
以上がphp die() と exit() の違いの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

メモ帳++7.3.1
使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









