ホームページ バックエンド開発 PHPチュートリアル 07-再度議論 SAPI java api 1.8 中国語版 jquery api steam api64.dl

07-再度議論 SAPI java api 1.8 中国語版 jquery api steam api64.dl

Jul 29, 2016 am 08:52 AM
api sap

PHP ライフサイクルの各段階で、いくつかのサービス関連の操作が SAPI インターフェイスを通じて実装されます。 これらの組み込み実装の物理的な場所は、PHP ソース コードの SAPI ディレクトリ内にあります。このディレクトリには、コマンド ライン プログラムの実装、Apache の mod_php モジュールの実装、fastcgi の実装など、各サーバー抽象化レイヤーの PHP コードが保存されます。

各サーバー抽象化レイヤー間では同じ規則に従います。ここではこれを SAPI インターフェイスと呼びます。 各 SAPI 実装は、_sapi_module_struct 構造体変数です。 (SAPI インターフェース)。 PHP ソース コードでは、サーバー関連の情報を呼び出す必要がある場合、すべて SAPI インターフェイスの対応するメソッドを呼び出すことによって実装され、各サーバー抽象化レイヤーの実装時に対応するメソッドは独自の実装を持ちます。

以下は、SAPI の簡単な図です:


sap2000 api,api原油数据公布,api原油库存,美国api原油数据,api,api数据对原油影响,原油里什么是api,百度地图api,api是什么,steam api.dll,api接口,java api,java api 1.8中文版,jquery api,steam api64.dl

cgi モードと apache2 サーバーを例として、それらの起動方法は次のとおりです:

<code>cgi_sapi_module.startup(&cgi_sapi_module)   //  cgi模式 cgi/cgi_main.c文件

apache2_sapi_module.startup(&apache2_sapi_module);
 //  apache2服务器  apache2handler/sapi_apache2.c文件
</code>
ログイン後にコピー

ここでの cgi_sapi_module は、sapi_module_struct 構造体の静的変数です。 その起動メソッドは php_cgi_startup 関数ポインタを指します。この構造体には、スタートアップ関数ポインターに加えて、他の多くのメソッドまたはフィールドがあります。 その定義の一部は次のとおりです:

<code>struct _sapi_module_struct {
    char *name;         //  名字(标识用)
    char *pretty_name;  //  更好理解的名字(自己翻译的)

    int (*startup)(struct _sapi_module_struct *sapi_module);    //  启动函数
    int (*shutdown)(struct _sapi_module_struct *sapi_module);   //  关闭方法

    int (*activate)(TSRMLS_D);  // 激活
    int (*deactivate)(TSRMLS_D);    //  停用

    int (*ub_write)(const char *str, unsigned int str_length TSRMLS_DC);
     //  不缓存的写操作(unbuffered write)
    void (*flush)(void *server_context);    //  flush
    struct stat *(*get_stat)(TSRMLS_D);     //  get uid
    char *(*getenv)(char *name, size_t name_len TSRMLS_DC); //  getenv

    void (*sapi_error)(int type, const char *error_msg, ...);   /* error handler */

    int (*header_handler)(sapi_header_struct *sapi_header, sapi_header_op_enum op,
        sapi_headers_struct *sapi_headers TSRMLS_DC);   /* header handler */

     /* send headers handler */
    int (*send_headers)(sapi_headers_struct *sapi_headers TSRMLS_DC);

    void (*send_header)(sapi_header_struct *sapi_header,
            void *server_context TSRMLS_DC);   /* send header handler */

    int (*read_post)(char *buffer, uint count_bytes TSRMLS_DC); /* read POST data */
    char *(*read_cookies)(TSRMLS_D);    /* read Cookies */

    /* register server variables */
    void (*register_server_variables)(zval *track_vars_array TSRMLS_DC);

    void (*log_message)(char *message);     /* Log message */
    time_t (*get_request_time)(TSRMLS_D);   /* Request Time */
    void (*terminate_process)(TSRMLS_D);    /* Child Terminate */

    char *php_ini_path_override;    //  覆盖的ini路径

    ...
    ...
};
</code>
ログイン後にコピー

上記の構造は、各サーバーのインターフェイス実装で定義されます。 Apache2 で定義されているとおり:

<code>static sapi_module_struct apache2_sapi_module = {
    "apache2handler",
    "Apache 2.0 Handler",

    php_apache2_startup,                /* startup */
    php_module_shutdown_wrapper,            /* shutdown */

    ...
}
</code>
ログイン後にコピー

PHP に組み込まれている SAPI 実装の多くは、保守されなくなっているか、やや非主流になっています。現在、PHP コミュニティは、一部の SAPI をコード ベースから移動することを検討しています。 コミュニティは、本当に必要な場合、または一部の機能がほぼ普遍的な場合を除き、多くの機能が PECL ライブラリに含まれると考えています。たとえば、非常に人気のある APC キャッシュ拡張機能はコア コード ベースに組み込まれます。

SAPI 全体は、オブジェクト指向のテンプレート メソッド パターンの適用に似ています。 SAPI.c および SAPI.h ファイルに含まれる一部の関数は、テンプレート メソッド パターンの抽象テンプレートであり、各サーバーの定義および sapi_module の関連実装は特定のテンプレートです。

このような構造は、PHP ソース コードの多くの場所で使用されます。たとえば、PHP 拡張機能の開発では、各拡張機能で zend_module_entry 構造体を定義する必要があります。 この構造体の機能は、テンプレート メソッド パターンに似たアプリケーションである sapi_module_struct 構造体に似ています。 PHP のライフサイクルでは、拡張機能を呼び出す必要がある場合、呼び出されるメソッドは zend_module_entry 構造体で指定されたメソッドです。前のセクションで説明したように、各拡張機能のリクエストの初期化を実行するときは、 request_startup_func メソッドが一律に呼び出されます。 、各拡張機能の定義では、request_startup_func に対応する関数がマクロ PHP_RINIT によって指定されます。 VLD 拡張機能を例に挙げます。そのリクエストは PHP_RINIT(vld) として初期化され、それに応じて拡張機能には次の関数の実装が必要です:

<code>PHP_RINIT_FUNCTION(vld) {
}
</code>
ログイン後にコピー

したがって、同様に、実装する場合は、各サーバー インターフェイスも対応する SAPI を実装する必要があります。

')​​.addClass('事前番号付け').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上、API と sap の内容を含めて 07-Discuss SAPI を再度紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

PHP プロジェクトで API インターフェイスを呼び出してデータをクロールおよび処理するにはどうすればよいですか? PHP プロジェクトで API インターフェイスを呼び出してデータをクロールおよび処理するにはどうすればよいですか? Sep 05, 2023 am 08:41 AM

PHP プロジェクトで API インターフェイスを呼び出してデータをクロールおよび処理するにはどうすればよいですか? 1. はじめに PHP プロジェクトでは、多くの場合、他の Web サイトからデータをクロールし、これらのデータを処理する必要があります。多くの Web サイトでは API インターフェイスが提供されており、これらのインターフェイスを呼び出すことでデータを取得できます。この記事では、PHP を使用して API インターフェイスを呼び出し、データをクロールおよび処理する方法を紹介します。 2. API インターフェースの URL とパラメーターを取得する 開始する前に、ターゲット API インターフェースの URL と必要なパラメーターを取得する必要があります。

Oracle API使用ガイド: データ・インタフェース・テクノロジの探求 Oracle API使用ガイド: データ・インタフェース・テクノロジの探求 Mar 07, 2024 am 11:12 AM

Oracle は世界的に有名なデータベース管理システム プロバイダーであり、その API (アプリケーション プログラミング インターフェイス) は、開発者が Oracle データベースと簡単に対話して統合するのに役立つ強力なツールです。この記事では、Oracle API 使用ガイドを詳しく掘り下げ、開発プロセス中にデータ インターフェイス テクノロジを利用する方法を読者に示し、具体的なコード例を示します。 1.オラクル

Oracle API統合戦略分析: システム間のシームレスな通信の実現 Oracle API統合戦略分析: システム間のシームレスな通信の実現 Mar 07, 2024 pm 10:09 PM

OracleAPI統合戦略分析: システム間のシームレスな通信を実現するには、特定のコード・サンプルが必要です。今日のデジタル時代では、社内の企業システムは相互に通信してデータを共有する必要があり、OracleAPIは、システム間のシームレスな通信を実現するための重要なツールの1つです。システム。この記事では、OracleAPIの基本概念と原則から始まり、API統合戦略について説明し、最後に読者がOracleAPIをよりよく理解して適用できるように具体的なコード例を示します。 1. 基本的な Oracle API

React API 呼び出しガイド: バックエンド API とデータをやり取りおよび転送する方法 React API 呼び出しガイド: バックエンド API とデータをやり取りおよび転送する方法 Sep 26, 2023 am 10:19 AM

ReactAPI 呼び出しガイド: バックエンド API とやり取りしてデータを転送する方法 概要: 最新の Web 開発では、バックエンド API とやり取りしてデータを転送することは一般的なニーズです。 React は、人気のあるフロントエンド フレームワークとして、このプロセスを簡素化するための強力なツールと機能をいくつか提供します。この記事では、React を使用して基本的な GET リクエストや POST リクエストなどのバックエンド API を呼び出す方法を紹介し、具体的なコード例を示します。必要な依存関係をインストールします。まず、Axi がプロジェクトにインストールされていることを確認します。

Laravel APIのエラー問題に対処する方法 Laravel APIのエラー問題に対処する方法 Mar 06, 2024 pm 05:18 PM

タイトル: Laravel API エラーの問題に対処する方法、具体的なコード例が必要です Laravel を開発していると、API エラーが頻繁に発生します。これらのエラーは、プログラム コードのロジック エラー、データベース クエリの問題、外部 API リクエストの失敗など、さまざまな理由で発生する可能性があります。これらのエラー レポートをどのように処理するかは重要な問題であり、この記事では、特定のコード例を使用して、Laravel API エラー レポートを効果的に処理する方法を示します。 1. Laravelでのエラー処理

開発に関する提案: API 開発に ThinkPHP フレームワークを使用する方法 開発に関する提案: API 開発に ThinkPHP フレームワークを使用する方法 Nov 22, 2023 pm 05:18 PM

開発の提案: API 開発に ThinkPHP フレームワークを使用する方法 インターネットの継続的な発展に伴い、API (アプリケーション プログラミング インターフェイス) の重要性がますます高まっています。 API は、異なるアプリケーション間の通信の橋渡しとなるもので、データの共有や関数の呼び出しなどを実現し、開発者に比較的簡単かつ迅速な開発手法を提供します。優れた PHP 開発フレームワークである ThinkPHP フレームワークは、効率的でスケーラブルで使いやすいです。

樹液とは何ですか 樹液とは何ですか Sep 13, 2023 pm 04:41 PM

SAP はドイツのソフトウェア会社であり、エンタープライズ リソース プランニングと関連ソフトウェア ソリューションの提供に注力している世界最大のエンタープライズ管理ソフトウェア会社の 1 つです。 1972 年に設立され、本社はドイツのヴァルドルフにあり、当初はドイツ企業に財務会計ソフトウェアを提供することが SAP の主な事業でした。 SAP は企業の発展に伴い、その製品ラインを物流、サプライ チェーン管理、人事管理、販売および流通などの分野にまで徐々に拡大しており、SAP のソフトウェア ソリューションは世界のエンタープライズ管理ソフトウェア市場のリーダーの 1 つであり続けています。

Python を使用して API データを CSV 形式で保存する Python を使用して API データを CSV 形式で保存する Aug 31, 2023 pm 09:09 PM

データ駆動型のアプリケーションと分析の世界では、API (アプリケーション プログラミング インターフェイス) がさまざまなソースからデータを取得する際に重要な役割を果たします。 API データを操作する場合、多くの場合、アクセスや操作が簡単な形式でデータを保存する必要があります。そのような形式の 1 つは CSV (カンマ区切り値) で、これを使用すると表形式のデータを効率的に編成して保存できます。この記事では、強力なプログラミング言語 Python を使用して API データを CSV 形式で保存するプロセスについて説明します。このガイドで概説されている手順に従うことで、API からデータを取得し、関連情報を抽出し、さらなる分析と処理のためにそれを CSV ファイルに保存する方法を学びます。 Python を使用した API データ処理の世界に飛び込み、CSV 形式の可能性を解き放ってみましょう

See all articles