スタンドアロンの PHP 拡張機能の作成方法
スタンドアロンの PHP 拡張機能は、PHP ソース コードとは独立して配布できます。このような拡張機能を作成するには、次の 2 つのものを準備する必要があります:
-
設定ファイル(config.m4)
-
モジュールのソースコード
次に、これらのファイルを作成して結合する方法について説明します。
システムツールを準備する
拡張機能をコンパイルしてシステム上で正常に実行したい場合は、次のツールを準備する必要があります:
-
GNU 自動設定
-
GNU オートメイク
-
GNU libtool
-
GNU m4
上記は ftp://ftp.gnu.org/pub/gnu/ から入手できます。
注: これらはすべて、Unix のような環境でのみ使用できるツールです。
既存の拡張機能を変更する
スタンドアロン拡張機能を作成するのがいかに簡単かを示すために、まず PHP に既に埋め込まれている拡張機能をスタンドアロン拡張機能に変更してみましょう。 PHP をインストールし、次のコマンドを実行します:
$ mkdir /tmp/newext
$ cd /tmp/newext
これで空のディレクトリができました。ファイルを mysql 拡張ディレクトリにコピーします:
$ cp -rp php-4.0.X/ext/mysql/* .
# 注: この README は本当に更新する必要があるようです
# mysql 拡張機能は PHP7 から削除されました
ここで展開が完了しました。以下を実行してください:
$phpize
これで、このディレクトリ内のファイルをどこにでも独立して保存できるようになり、この拡張機能は完全に独立して存在できます。
ユーザーはコンパイル時に次のコマンドを使用する必要があります:
$ ./設定
[--with-php-config=/path/to/php-config]
[--with-mysql=MYSQL-DIR]
$メイクインストール
注: これは、PHP 拡張機能を作成したい場合は、PHP をインストールし、PHP ソース コードのコピーをダウンロードする必要があることを意味します。
新しい拡張機能を定義する
拡張機能の例に「foobar」という名前を付けました。新しい拡張機能には、foo.c と bar.c の 2 つのリソース ファイルといくつかのヘッダー ファイルが含まれていますが、これらは重要なだけではありません)。
拡張機能の例が外部ライブラリを参照しないことが重要です。これは、ユーザーがコンパイル オプションを指定する必要がないためです。
オプションは、リソース ファイルの名前を指定するために使用されます。リソース ファイルはいくつでも指定できます。 LTLIBRARY_SOURCES
注: 上記は Makefile.in ファイルの構成オプションです。xdebug を参照してください。
m4サフィックスの設定ファイルを変更する
m4 構成ファイルでは、いくつかの追加チェックを指定できます。スタンドアロン拡張機能の場合、マクロ呼び出しを数回行うだけで済みます。PHP_ARG_ENABLE(foobar,foobarを有効にするかどうか,
[ --enable-foobar foobar を有効にする])
if テスト "$PHP_FOOBAR" != "いいえ" then
PHP_NEW_EXTENSION(foobar, foo.c bar.c, $ext_shared)
ふぃ
共有モードで起動します。 PHP_ARG_ENABLE
会自动设置好正确的变量以保证扩展能够被 PHP_NEW_EXTENSION
セット。 PHP_NEW_EXTENSION
的第一个参数是扩展的名称,第二个参数是资源文件。第三个参数 $ext_shared
是由 PHP_ARG_ENABLE/WITH
为 PHP_NEW_EXTENSION
を使用してください。 PHP モジュールを公開する予定がない場合でも、これらの設定により、モジュールのメイン PHP モジュールとのインターフェイスの一貫性が保たれます。 PHP_ARG_ENABLE
或 PHP_ARG_WITH
注: 同じです。 PHP_ARG_ENABLE
和 PHP_ARG_WITH
应该是用于定义模块是动态扩展还是静态编译进 PHP 中,就跟编译 PHP 时使用的 --enable-xxx
和 --with-xxx
リソースファイルを作成する
PHP モジュールの汎用コードを作成したり、基本的な関数定義や関数パラメーターを処理する C コードを作成したりすることもできます。具体的な情報は READNE.EXT_SKEL にあります。 ext_skel
注: 基本モジュールに必要なリソース ファイルと設定ファイルは生成でき、自分で作成する必要はありません。 ext_skel
カスタムモジュールを変更する
config.m4 ファイルとリソース ファイルを同じディレクトリに配置して実行します phpize
PHP 4.0 以降には、PHP のコンパイル時に phpize がインストールされています)。
phpize がシステム環境変数にない場合は、次のように絶対パスを指定する必要があります:
$ /php/bin/phpize
このコマンドは、必要なビルド ファイルを現在のディレクトリに自動的にコピーし、config.m4 に基づいて構成ファイルを作成します。
上記の手順を完了すると、すでに独立した拡張機能が作成されています。
拡張機能をインストール
拡張機能は次のコマンドでコンパイルしてインストールできます:
$ ./設定
[--with-php-config=/path/to/php-config]
$メイクインストール
モジュールに共有サポートを追加します
場合によっては、他のモジュールをロードするために独立した拡張機能を共有する必要があります。次に、作成済みの foo モジュールに共有サポートを追加する方法を説明します。
#ifdef COMPILE_DL_FOO
ZEND_GET_MODULE(フー)
#endif
この段落は上でも触れましたが、ここでもう一度強調しておきます。
PECLウェブサイト規約
PECL に拡張して Web サイトを公開する予定がある場合は、考慮すべき点がいくつかあります:
#define PHP_FOO_VERSION "1.2.3"

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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

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

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ホットトピック









