前回の記事では「PHPで画像にウォーターマークを追加する方法を理解する必要があります」ということで、PHPでウォーターマークを追加する方法をサンプルを通して詳しく紹介しました。 PHP でのエラー処理に関する関連知識を引き続き見ていきますので、皆さんのお役に立てれば幸いです。
PHP におけるエラーと例外の処理は、PHP で非常に頻繁に使用されますが、日常の開発では、セミコロンの追加忘れなどに必ず遭遇します。 、関数名が間違っている、関数が再定義されているなど、エラーは数多くありますが、開発プロセス中にエラーを見つけることができれば、開発にとって非常に有益であることは間違いありません。
したがって、プロジェクト開発時にプロセスを合理的に使用することは、エラーを見つけて修正し、開発をスピードアップするのに役立ちます。次に、エラー処理を理解する方法を見てみましょう。無料の「php エラー処理」教育ビデオを通じて学習することもできます。
PHP の例外処理クラス
PHP には、組み込みの例外処理クラス () があります。 Exception
、このクラスには、プログラムの例外とエラーをキャプチャできるいくつかの例外処理関数が含まれています。
このクラスでより一般的に使用される関数は次のとおりです:
getTraceAsString()
: 文字列にフォーマットされた関数を返します。 getTrace() 関数によって生成される情報__toString()
: 例外を生成する文字列情報。オーバーロードすることができます。この関数の先頭は 2 つのアンダースコアであることに注意してください。getMessage()
: 異常なメッセージの内容を返しますgetLine()
: エラーが発生したコード行番号を返します。-
getCode()
: 例外コードを数値形式で返します getFile()
: 例外が発生したファイル名を返します。getTrace()
: 戻り値backtrace() array
プログラム内の例外をキャプチャする
プログラム内の例外は、通常、それ自体は表示されません。現時点では、プログラム内で例外をキャッチするという目的は、try catch
ステートメントと throw
キーワードによって達成できます。
try catch ステートメントはフロー制御ステートメントに似ています。throw キーワードは例外をスローできます。条件付き選択と同様の構造を通じてプログラムで例外をキャプチャできます。 try catch ステートメントの構文形式は次のとおりです:
try{ // 可能出现异常或错误的代码,比如文件操作、数据库操作等 }catch(Exception $a){ // $a 为一个异常类的对象 // 输出错误信息 }
プログラム例外をキャッチする必要がある場合、キャッチする必要があるコードを try コード ブロックに入れる必要があります。上記の構文では、それぞれtry には少なくとも 1 つと対応する catch が必要です。 try コード ブロックが一致する例外をキャッチしない場合、コードは最後のキャッチにジャンプして続行します。
その中で生成された例外は、throw ステートメントによってスローされ、catch によってキャプチャされることができます。例外が発生すると、その背後にあるコードは実行を継続できなくなります。
例は次のとおりです:
<?php try{ $err = '抛出异常信息,并跳出 try 语句块'; if(is_dir('./demo')){ echo '这里是一些可能会发生异常的代码'; }else{ throw new Exception($err, 20211020); // 抛出异常 } echo '上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>'; }catch(Exception $e){ echo '捕获异常:'.$e->getMessage().'<br>错误代码:'.$e->getCode().'<br>'; } echo '继续执行 try catch 语句之外的代码'; ?>
出力結果:
上記の例では、次のようにしてみてください。 try 文で判断 現在のディレクトリに、demo という名前のディレクトリはありますか? ディレクトリが存在しないため、throw キーワードが実行され、例外がスローされます。例外が見つかってスローされた後は、try ステートメントの残りのステートメントは実行されません。
独自の例外クラスを作成する
PHP では、例外クラスをほとんど受け取らないため、事前にいくつかの例外を定義できます。イニシアチブ 例外をスローします。例外が事前に定義されている場合、if-else を使用して例外の可能性を判断し、手動で例外をスローできます。PHP では、自分で作成した例外クラスを使用することがよくあります。
例は次のとおりです。
<?php class emailException extends Exception{ function __toString(){ return "<b>email is null</b>file:".$this->getFile().',line:'. $this->getLine(); } } class nameException extends Exception{ } ?>
上の例では、2 つの例外クラスが定義されており、どちらも Exception 基本クラスを継承しています。
実際のビジネスでは、さまざまなニーズに応じてさまざまな例外をスローします。例は次のとおりです:
function reg($reg) { if (empty($reg['email'])) { throw new emailException("emaill is null", 1); } if(empty($reg['name'])) { throw new nameException("name is null", 2); } }
ビジネス コードを実行するときに、例外がスローされるかどうかを if ステートメントを使用して判断できます。例外が発生した場合は、手動で例外をスローし、ステートメントを通じてさまざまな例外をさまざまな例外クラスに配布します。次の例では、さまざまな状況に応じてさまざまな例外がキャプチャされます。最初のキャッチで例外がキャッチされたとき、他の例外がまだ発生している場合でも、プログラム内に存在する場合、他のキャッチ コード ブロックはスキップされます。プログラムに例外があるかどうかに関係なく、finally 内のステートメントは実行されます。例は次のとおりです。
try{ $reg = array('phone'=>'1888888888'); reg($reg); } catch(emailException $e) { echo $e; } catch(nameException $e) { echo 'error msg:' .$e->getMessage().'error code:'.$e->getCode(); } finally { echo ' finally'; }
PHP について詳しく知りたい場合は、「PHP ビデオ チュートリアル 」をクリックして学習できます。
以上がPHP における例外処理とは何かを 5 分で説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPでは、session_status()またはsession_id()を使用して、セッションが開始されたかどうかを確認できます。 1)session_status()関数を使用します。 php_session_activeが返された場合、セッションが開始されました。 2)SESSION_ID()関数を使用します。空の文字列が返された場合、セッションが開始されます。どちらの方法でもセッション状態を効果的に確認でき、使用する方法を選択することは、PHPバージョンと個人的な好みに依存します。

Sessionsionsionsarevitalinwebapplications、特にコマースプラットフォームの前。

PHPでの同時セッションアクセスの管理は、次の方法で実行できます。1。データベースを使用してセッションデータを保存します。これらの方法は、データの一貫性を確保し、並行性のパフォーマンスを向上させるのに役立ちます。

phpsessionshaveverallimitations:1)storagecconstraintscanleadtoperformanceissues; 2)securityvulnerablesliasitylikessessionfixationAttacksicexist;

負荷分散はセッション管理に影響しますが、セッションの複製、セッションの粘着性、集中セッションストレージで解決できます。 1。セッションレプリケーションサーバー間のセッションデータをコピーします。 2。セッションスティンネスは、ユーザーリクエストを同じサーバーに指示します。 3.集中セッションストレージは、Redisなどの独立したサーバーを使用してセッションデータを保存してデータ共有を確保します。

SESSIONLOCKINGISATECHNIQUESTOESUREAUSER'SSESSIONREMAINSEXCLUSIVETOONEUSATIME.ITISCRUCIALFORPREVENTINGDATACORTIONANDSECURITYBREACHESINMULTI-USERAPPLICATIONS.SESSIONLOCKINGISISIMPLEMENTEDUSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGROCKINGSMECHANISMなど

PHPセッションの代替品には、Cookie、トークンベースの認証、データベースベースのセッション、Redis/Memcachedが含まれます。 1.Cookiesは、クライアントにデータを保存することによりセッションを管理します。 2.トークンベースの認証はトークンを使用してユーザーを検証します。これは非常に安全ですが、追加のロジックが必要です。 3.Databaseベースのセッションは、データベースにデータを保存します。これは、スケーラビリティが良好ですが、パフォーマンスに影響を与える可能性があります。 4. Redis/Memcachedは分散キャッシュを使用してパフォーマンスとスケーラビリティを向上させますが、追加のマッチングが必要です

SessionHijackingとは、ユーザーのSessionIDを取得してユーザーになりすましている攻撃者を指します。予防方法には、次のものが含まれます。1)HTTPSを使用した通信の暗号化。 2)SessionIDのソースの検証。 3)安全なSessionID生成アルゴリズムの使用。 4)SessionIDを定期的に更新します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ホットトピック









