目次
Symfony2 のソースコード分析 - 起動プロセス 2、symfony2 のソースコード
ホームページ バックエンド開発 PHPチュートリアル symfony2 ソースコード解析 - 起動プロセス 2、symfony2 ソースコード_PHP チュートリアル

symfony2 ソースコード解析 - 起動プロセス 2、symfony2 ソースコード_PHP チュートリアル

Jul 13, 2016 am 10:15 AM
Linuxカーネル

Symfony2 のソースコード分析 - 起動プロセス 2、symfony2 のソースコード

前回の記事では、Symfony2 フレームワークのソースコードを分析し、Symfony2 がリクエストの前半をどのように完了するかを検討しました。前半は、Symfony2 フレームワークがリクエストの準備をしているものとして理解できます。コンテナの生成、キャッシュ、バンドルの初期化、その他の準備を含むリクエストを処理します (Symfony2 ソース コード分析 - 起動プロセス 1)。この記事では、Symfony2 が要求されたデータに基づいて Response オブジェクトを生成し、応答データをクライアントに返す方法について説明します。

分析の前に、Symfony2 のイベント駆動メカニズム: Symfony2 イベント駆動について理解する必要があります。

本題に戻りますが、Symfony2 リクエストのワークフローは実際には Symfony2 カーネルのイベント ドライバーによって完了します。以下は Symfony2 フレームワークによって定義されるカーネル イベントです。symfony2 ソースコード解析 - 起動プロセス 2、symfony2 ソースコード_PHP チュートリアル最終クラスカー​​ネルイベント { /** * REQUESTイベントはリクエストの最初に発生します ・発送 * * このイベントを使用すると、リクエストに対するレスポンスを事前に作成できます。 * フレームワーク内の他のコードが実行されます。イベントリスナーメソッド * SymfonyComponentHttpKernelEventGetResponseEventを受け取ります * 実例。 * * @var 文字列 * * @api */ const REQUEST = 'kernel.request'; /** * EXCEPTION イベントは、キャッチされなかった例外が発生したときに発生します * * このイベントを使用すると、スローされた例外または * スローされた例外を変更します。イベントリスナーメソッドが受け取るのは、 * SymfonyComponentHttpKernelEventGetResponseForExceptionEvent * 実例。 * * @var 文字列 * * @api */ const EXCEPTION = 'kernel.例外'; /** ※VIEWイベントはコントローラの戻り値が返されたときに発生します。 * は応答インスタンスではありません * * このイベントを使用すると、 *コントローラー。イベントリスナーメソッドは、 * SymfonyComponentHttpKernelEventGetResponseForControllerResultEvent * 実例。 * * @var 文字列 * * @api */ const VIEW = 'kernel.view'; /** * CONTROLLER イベントは、コントローラーが見つかると発生します。 * リクエストの処理 * * このイベントを使用すると、 * リクエスト。イベントリスナーメソッドは、 * SymfonyComponentHttpKernelEventFilterControllerEvent インスタンス。 * * @var 文字列 * * @api */ const CONTROLLER = 'kernel.controller'; /** * RESPONSE イベントは、応答が作成されると発生します。 * リクエストへの返信 * * このイベントを使用すると、応答を変更または置き換えることができます。 * と答えました。イベントリスナーメソッドは、 * SymfonyComponentHttpKernelEventFilterResponseEvent インスタンス。 * * @var 文字列 * * @api */ const RESPONSE = 'kernel.response'; /** * 応答が送信されると TERMINATE イベントが発生します * * このイベントにより、コストのかかる応答後ジョブを実行できます。 * イベントリスナーメソッドは * SymfonyComponentHttpKernelEventPostResponseEvent インスタンス。 * * @var 文字列 */ const TERMINATE = 'kernel.terminate'; /** ※ FINISH_REQUEST イベントは、リクエストに対するレスポンスが生成されたときに発生します。 * * このイベントにより、地球規模および環境の状態をリセットできます。 * リクエスト中にアプリケーションが変更されたとき。 * * @var 文字列 */ const FINISH_REQUEST = 'kernel.finish_request'; } コードを表示

私は、イベントカスケード、対応する内部核イベントを書き込むことができ、Symfony2 がこのイベントを起動するときに、対応するイベントカケーターが実行されます。会,去大会(Symfony2)登记(监听)参加50米短跑(イベント),当50米短跑比赛开開始(イベント被触発),那你就奔跑吧(监听器执行,其实就是一执行関数,関数完了)何か仕事はあなたの要求に応じます)、少年。

Symfony2 の内核イベント処理フローの大部分の作業都在 HttpKernel::handleRaw メソッド中:

リーリー リーリー symfony2 ソースコード解析 - 起動プロセス 2、symfony2 ソースコード_PHP チュートリアル 1 private関数 filterResponse(レスポンス $response, リクエスト $request, $type) 2 { 3 $event = new FilterResponseEvent($this, $request, $type, $response); 4 5 $this->dispatcher->dispatch(KernelEvents::RESPONSE, $event); 6 7 $this->finishRequest($request, $type); 8 9 return $event->getResponse(); 10 } 11 12 /** 13 * 終了リクエストイベントを発行し、スタックからリクエストをポップします。 14 * 15 * ここでは操作の順序が重要であることに注意してください。 16 * {@link RequestStack::getParentRequest()} などの操作により、 17 * 奇妙な結果。 18 * 19 * @param リクエスト $request 20 * @param int $type 21 */ 22 private関数finishRequest(リクエスト$request, $type) 23 { 24 $this->dispatcher->dispatch(KernelEvents::FINISH_REQUEST, new FinishRequestEvent($this, $request, $type)); 25 $this->requestStack->pop(); 26 } コードを表示

図2

Symfony2フレームのイベント分発行機的コア心代コード:

リーリー

本具体的なlinux内部コアの起動手順、详细点(最も具体的には实际代コード)、最も良い内部コアは26以降の

私たち人間は、毛德操作先生の Linux 内核の状況分析、分析の透過性、Linux 内核全体の解決に問題がないことを感じています。の詳細については、内部コアのソース コード解も参照してください。したがって、推荐你見点博客は、具体的には各セキュリティに関わる、以下の動作の大まかな手順を理解しているので、linux 内部コアの状況分析を参照してください。  


android 21のソースコード分析之长按電気源键弹出对话框功更改可能

1.このダイアログは PhoneWindowManager によって制御されており、PhoneWindowManager の interceptKeyTq メソッド内で、代価はこの一行です

mHandler.postDelayed(mPowerLongPress, ViewConfiguration.getGlobalActionKeyTimeout());

mProwerLongPress は実行可能です。 GlobalActions 内の時間調整用showDialog メソッド。したがって、このダイアログは GlobalActions によって管理されており、PowerDialog は以前のバージョンですでに使用されています。 .VIBRATE_TYPE_RINGER, on ? AudioManager.VIBRATE_SETTING_ON : AudioManager.VIBRATE_SETTING_OFF);

これは、音声の処理に問題がなく、これも確認できません。助けてください。
 




http://www.bkjia.com/PHPjc/899447.html

www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/899447.html

symfony2 ソースコード分析——启動过程 2、symfony2 ソースコード 上一篇分析 Symfony2 フレームソースコード、探究 Symfony2 がどのように 1 つの要求を完了するか、前半部分は Sy...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Linux カーネルの機能を探る: 5 つの主要部分の詳細な紹介 Linux カーネルの機能を探る: 5 つの主要部分の詳細な紹介 Mar 21, 2024 am 09:57 AM

Linux カーネルは、オペレーティング システムの中核部分として、ハードウェア リソースの管理やシステム コールの提供などの重要な機能を担っています。この記事では、プロセス管理、ファイル システム、ネットワーク通信、デバイス ドライバー、メモリ管理を含む Linux カーネルの 5 つの主要な部分を詳しく掘り下げ、詳細な紹介とコード例を提供します。 1. プロセス管理 プロセスの作成 Linux カーネルでは、プロセスの作成は fork() システム コールを通じて実装されます。簡単なコード例を次に示します: #include

Linux カーネルのソースコード配布の詳細な調査 Linux カーネルのソースコード配布の詳細な調査 Mar 15, 2024 am 10:21 AM

これは、Linux カーネルのソース コード配布を詳しく調査した 1500 ワードの記事です。スペースが限られているため、ここでは Linux カーネル ソース コードの組織構造に焦点を当て、読者の理解を深めるためにいくつかの具体的なコード例を示します。 Linux カーネルは、ソース コードが GitHub でホストされているオープン ソース オペレーティング システム カーネルです。 Linux カーネルのソース コード配布全体は非常に大きく、複数の異なるサブシステムとモジュールが関与する数十万行のコードが含まれています。 Linux カーネルのソース コードをより深く理解するには

実践的な戦闘 | RISC-V Linux エントリ アドレス 2M 予約メモリの最適化 実践的な戦闘 | RISC-V Linux エントリ アドレス 2M 予約メモリの最適化 Aug 01, 2023 pm 03:37 PM

前回の記事では、RISC-V Linux のエントリ アドレスが 2M アラインメントである必要があると述べましたが、今日は 2M アラインメントの問題を解決する方法、またはその一部を最適化する方法について説明します。想い出。

非 MMU サポートは、Linux カーネルの uClinux ポートによって提供されますか? 非 MMU サポートは、Linux カーネルの uClinux ポートによって提供されますか? Jan 26, 2024 pm 05:18 PM

長くて技術的な内容が多いので、クリックしてフォローしていけば迷うことはありません。序文: Linux カーネルについて理解する コンピュータ システムはハードウェアとソフトウェアが共生しており、相互に依存しており、分離することはできません。コンピューター ハードウェア Linux カーネルの移植手順には、コンピューター シリンダーを構成する周辺デバイス、プロセッサ、メモリ、ハード ドライブ、およびその他の電子デバイスが含まれます。また、それを操作および制御するためのソフトウェアがなければ、単独で動作することはできません。この制御作業を実行するソフトウェアはオペレーティング システムと呼ばれ、Linux 用語では「カーネル」または「コア」と呼ばれます。 Linux カーネルの主要モジュール (コンポーネント) は、ストレージ管理、CPU とプロセス管理、ファイル システム、デバイス管理とドライバー、ネットワーク通信 Linux フォーラム、およびシステムの部分に分かれています。

Linux カーネルの TCP プロトコル スタック最適化に関する秘密のヒントが明らかに Linux カーネルの TCP プロトコル スタック最適化に関する秘密のヒントが明らかに Jan 28, 2024 am 09:39 AM

親愛なる読者の皆さん、こんにちは!ここで、Linux カーネル TCP プロトコル スタックの開発と最適化における専門スキルとともに、シニア ネットワーク エンジニアとして蓄積してきた貴重な経験とスキルを皆さんと共有できることを光栄に思います。この記事を通じて、この分野に強い興味を持っている方、あるいは現在取り組んでいる方に、お互いに学び合い、議論し、実践的で役立つ参考資料をお届けできればと思います。 1. TCP 接続の確立 TCP 接続の確立は、TCP プロトコル スタックの重要なトランザクションですが、多くの接続問題に直面することは珍しくありません。慎重な検討と詳細なデバッグの結果、SYN フラッディング攻撃の防止 (システム パラメーターの調整による) やネットワーク輻輳への対処 (つまり、TCPFastOp の使用) など、いくつかの一般的で実用的な問題とその解決策を発見しました。

Linux カーネル: コンピュータ オペレーティング システムの隠れたボスを明らかにする Linux カーネル: コンピュータ オペレーティング システムの隠れたボスを明らかにする Mar 24, 2024 am 09:10 AM

Linux カーネルがコンピュータ オペレーティング システムで重要な役割を果たしているという見解について説明します Linux カーネルの設計と実装 Linux カーネルの設計と実際のアプリケーションの詳細な分析を通じて、この分野における Linux カーネルの卓越した位置と影響力を明らかにします。 1. 最適化されたメモリ管理 仮想メモリ管理テクノロジを使用することで、Linux カーネルはメモリの割り当てとリサイクルを効率的に完了できます。 Linux カーネルは、置換ページ アルゴリズムの助けを借りて、物理メモリと仮想メモリ間のマッピング関係を正確に処理するように設計および実装されています。アプリケーションの特定のニーズに基づいて柔軟に調整できるため、システム全体のパフォーマンスが向上します。 2. 強力なプロセス管理カーネルは、優れたマルチタスク技術を使用して、複数のプロセスが単一システム内で調和して共存できるようにします。慎重に配合

Android システムと Linux カーネルの関係を調べる Android システムと Linux カーネルの関係を調べる Mar 14, 2024 pm 12:48 PM

Android システムと Linux カーネルは 2 つの密接な関係にあるエンティティであり、両者の関係は密接かつ複雑です。 Android システムでは、Linux カーネルが重要な役割を果たし、Android システムに基盤となるハードウェア ドライバーとシステム コールのサポートを提供します。この記事では、Android システムと Linux カーネルの関係、それらがどのように相互作用して連携するかを検討し、いくつかの具体的なコード例を示します。 Android は、Linux カーネルに基づいて開発されたモバイル オペレーティング システムで、主にスマートフォンやタブレットなどのモバイル デバイスに使用されます。 L

Linux カーネルの障害をデバッグする方法を本当に知っていますか? この記事を読めば、きっと理解できるでしょう。 Linux カーネルの障害をデバッグする方法を本当に知っていますか? この記事を読めば、きっと理解できるでしょう。 Aug 03, 2023 pm 04:50 PM

Linux カーネルはオペレーティング システムの中核であり、CPU、I/O デバイス、物理メモリ、ファイル システムなどのシステム リソースへのアクセスを制御します。ブート プロセス中およびシステムの実行中、カーネルはさまざまなメッセージをカーネル リング バッファに書き込みます。これらのメッセージには、システム動作に関するさまざまな情報が含まれています。

See all articles