この記事の内容は、PHP 拡張機能開発に関連する開発テクノロジーの比較と紹介です。必要な友人は参考にしてください。
PHP 拡張機能は、上級 PHP プログラマーにとって理解しておくべきスキルの 1 つです。 PHP 拡張機能開発の初心者が、成熟した拡張機能を開発して、PHP 開発の高度な分野に参入するにはどうすればよいでしょうか?この一連の開発チュートリアルでは、入門段階から上級段階まで段階的に説明します。
このチュートリアル シリーズは Linux (centos を推奨) で開発されており、PHP バージョンは 5.6 で、一定の Linux 操作経験と C/C++ の基礎があることを前提としています。
ご質問があり、連絡する必要がある場合は、QQ 技術交換グループ 32550793 に参加して私と連絡してください。
PHP 拡張機能を開発するには、いくつかの技術的な方法とフレームワークがあります。初心者にとって、学習への関心を高めるには、最も簡単に始められ、最も早く結果が得られるフレームワークを選択するのが最善です。誰もが自分に最適なものを見つけられるように、各技術フレームワークを 1 つずつ比較してみましょう。
1. ext-skel C言語開発を使用する
ext-skelは、公式のPHPソースコードで提供されているPHP拡張機能を生成するためのツールで、C言語フレームワークのPHP拡張機能スケルトンを生成できます。
PHP は公式には拡張機能開発者にとって非常に不親切です。ソース コードで提供される Zend API は非常に使いにくく、さまざまなマクロの記述方法が満載です。 Zend API には多くの落とし穴があり、一般の開発者が簡単に陥ってしまう可能性があります。さまざまな不可解なコア ダンプの問題が発生します。 Zend API にはドキュメントがほとんどなく、開発者がこのスキルを真に習得したい場合は、学習に多くの時間を費やす必要があります。
上記は swoole プラグイン開発者の心からの言葉です。この方法でプラグインを開発することは、初心者としての自信に深刻な打撃となることがわかります。幸いなことに、一部のマスターは、PHP 拡張機能を開発するための他の方法を用意してくれました。ZEND API を学習したり、C 言語に習熟する必要はありません。それでも PHP 拡張機能を開発でき、生成された拡張機能の実行速度は低下しません。 C言語で開発されたものとは大きく異なります。
2. Zephir PHP に似た言語開発を使用する
Zephir は、拡張 C 言語コードを自動的に生成する PHP に似た高級言語構文を提供し、PHP 拡張機能の作成を非常に簡単にします。しかし、この開発方法には、C/C++ 言語で開発されていないため、既存のさまざまな C/C++ 開発ライブラリを直接使用して強力な機能を実現する方法がないという問題があります。なので、ちょっと味気ない感じがします。
3. PHP-X を使用する C++ 言語開発
php-x は、有名な swoole 拡張機能開発者によって長年の開発経験に基づいて洗練された C++ ベースの拡張機能開発フレームワークのセットです。ドキュメントから判断すると、これは完全なデータ型を備えた比較的使いやすい開発フレームワークです。php cpp の開発スタイルに非常に似ていますが、私はまだそれを経験していません。
公式 php-x ドキュメントによると、開発された拡張機能は PHP7 以降のみをサポートしていますが、これは残念です。
4. phpcpp C++ 言語開発を使用する
PHP CPP は、シンプルで理解しやすく、強力で、コードのメンテナンスが容易で、実行速度が速い、私が推奨する PHP 拡張機能開発フレームワークです。
PHP CPP は、主に C++ 言語用の無料の PHP 開発拡張ライブラリです。これは、拡張機能をより興味深く、便利にするために、単純なコンピューター言語を使用して、開発者が保守および作成するのに便利です。理解しやすく、保守しやすく、美しくコーディングされています。 C++ で書かれたアルゴリズムは、PHP で書かれたアルゴリズムとほぼ同じに見えます。 PHP でプログラミングする方法を知っていれば、C++ で同じことを行う方法を簡単に学ぶことができます。
利点 1: Zend エンジンの知識は必要ありません。
Zend エンジンの内部は複雑すぎます。Zend エンジンのコードは混乱しており、ほとんど文書化されていません。しかし、PHP-CPP ライブラリは、これらすべての複雑な構造を、非常に使いやすい C++ クラスとオブジェクトにすでにカプセル化しています。 Zend Engine を直接呼び出したり、Zend Engine のソース コードを見たりしなくても、C++ で驚くほど高速なアルゴリズムを作成できます。 PHP-CPP を使用すると、PHP の内部を処理することなくネイティブ コードを作成できます。
利点 2: すべての重要な PHP 機能をサポート
PHP-CPP を使用すると、通常の PHP スクリプトと同じように簡単に変数、配列、関数、オブジェクト、クラス、インターフェイス、例外、名前空間を処理できます。これに加えて、スレッド、ラムダ、非同期プログラミングなどの C++ のすべての機能を使用できます。
利点 3: PHP 5.X、PHP7 拡張機能開発をサポート
PHP-CPP には、PHP 5 をサポートする拡張機能開発フレームワークのセットが 2 つあります。それは同じです。したがって、複数のバージョンと互換性のある PHP 拡張機能を開発したい場合、互換性を持たせるために余分な時間はかかりません。
5. 各開発フレームワークの hello world 拡張ソースコードの比較
各フレームワークの hello world 拡張ソースコードを以下にリストします。ソースコードの長さと複雑さから、直感的に理解できます。
ext-skel によって生成された c 拡張ソース コードは明らかに非常に読みにくく、理解するのが非常に困難です。
zephir の拡張ソース コードは PHP 構文に最も似ており、始めるのが最も簡単ですが、成熟した C/C++ ライブラリ コードを追加するのは困難です。
PHP-X と PHP CPP のソース コード スタイルは非常に似ており、どちらも標準の C++ 言語であり、理解しやすいです。拡張機能を開発するこれら 2 つの方法が最も適していることは想像に難くありません。C++ カプセル化を使用して開発を簡素化できるだけでなく、市販のさまざまな成熟した C++ ライブラリを直接呼び出してサービスを提供できるからです。
ext-skelのHello Worldソースコード
#ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" #include "php_helloworld.h" static int le_helloworld; PHP_FUNCTION(confirm_helloworld_compiled) { char *arg = NULL; int arg_len, len; char *strg; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { return; } len = spprintf(&strg, 0, "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "helloworld", arg); RETURN_STRINGL(strg, len, 0); } PHP_MINIT_FUNCTION(helloworld) { return SUCCESS; } PHP_MSHUTDOWN_FUNCTION(helloworld) { return SUCCESS; } PHP_RINIT_FUNCTION(helloworld) { return SUCCESS; } PHP_RSHUTDOWN_FUNCTION(helloworld) { return SUCCESS; } PHP_MINFO_FUNCTION(helloworld) { php_info_print_table_start(); php_info_print_table_header(2, "helloworld support", "enabled"); php_info_print_table_end(); } const zend_function_entry helloworld_functions[] = { PHP_FE(confirm_helloworld_compiled, NULL) /* For testing, remove later. */ PHP_FE_END /* Must be the last line in helloworld_functions[] */ }; zend_module_entry helloworld_module_entry = { STANDARD_MODULE_HEADER, "helloworld", helloworld_functions, PHP_MINIT(helloworld), PHP_MSHUTDOWN(helloworld), PHP_RINIT(helloworld), /* Replace with NULL if there's nothing to do at request start */ PHP_RSHUTDOWN(helloworld), /* Replace with NULL if there's nothing to do at request end */ PHP_MINFO(helloworld), PHP_HELLOWORLD_VERSION, STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_HELLOWORLD ZEND_GET_MODULE(helloworld) #endif
zephirのHello Worldソースコード
namespace Test; class Hello { public function say() { echo "Hello World!"; } }
PHP-XのHello Worldソースコード
#include <phpx.h> using namespace std; using namespace php; //声明函数 PHPX_FUNCTION(say_hello); //导出模块 PHPX_EXTENSION() { Extension *ext = new Extension("hello-world", "0.0.1"); ext->registerFunction(PHPX_FN(say_hello)); return ext; } //实现函数 PHPX_FUNCTION(say_hello) { echo("hello world"); }
PHP CPPのHello Worldソースコード
#include <phpcpp.h> void say_hello(Php::Parameters ¶ms) { Php::out <h2 id="参考文献">参考文献</h2> <p> PHP-X に基づいて PHP 拡張機能をすばやく開発する方法<br>PHP-X 中国語ヘルプ<br> 5 分で PHP 拡張機能開発のクイックスタート<br>zephir 中国語 Web サイト<br>zephir 英語公式 Web サイト<br> Zephir のインストールとデモ開発<br>phpcpp 英語公式 Web サイト<br>phpcpp英語ヘルプ<br>phpcpp 中国語ヘルプ</p><p><br></p></phpcpp.h>
以上がPHP拡張開発における関連開発技術の比較と紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

負荷分散はセッション管理に影響しますが、セッションの複製、セッションの粘着性、集中セッションストレージで解決できます。 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を定期的に更新します。

この記事では、PHPについて説明し、その完全なフォーム、Web開発での主要な使用、PythonとJavaとの比較、および初心者の学習のしやすさについて説明します。

PHPは、$ \ _ postおよび$ \ _を使用してフォームデータを処理し、検証、消毒、安全なデータベースインタラクションを通じてセキュリティを確保します。

この記事では、PHPとASP.NETを比較して、大規模なWebアプリケーション、パフォーマンスの違い、セキュリティ機能への適合性に焦点を当てています。どちらも大規模なプロジェクトでは実行可能ですが、PHPはオープンソースであり、プラットフォームに依存しませんが、ASP.NET、

PHPの症例感度は変化します:関数は鈍感であり、変数とクラスは感度があります。ベストプラクティスには、一貫した命名と、比較のためにケース非感受性関数を使用することが含まれます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

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

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

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

ホットトピック









