◆二次開発
二次開発とは
二次開発とは、簡単に言うと、既存のソフトウェアをカスタマイズ・修正し、機能拡張を行い、希望する機能や効果を実現することを指します。元のシステムのカーネルは変更しないでください。
なぜ二次開発なのか?
情報技術の継続的な発展に伴い、IT業界では一連の優れたオープンソース作品が登場しており、その作者は個人、プロジェクトチーム、または
ソフトウェア会社のいずれかです。これらの優れたオープンソースソフトウェアを選択・適用し、それを基にビジネスニーズに合わせた二次開発を行うことで、企業の情報コスト(時間コストや開発コスト)を節約できるだけでなく、技術的な保証も実現します。これは私たちがよく聞く言葉です。巨人の肩の上に立つと、より遠くまで見えるでしょう。したがって、多くの国内企業は二次開発人材を必要としています。
二次開発を行うには?
まず、このオープンソース製品で使用されている言語の基礎を持っている必要があります コードを理解できることが最も基本です。
第 2 に、このオープンソース製品の機能と使用法に精通している必要があります。このオープンソース製品に精通しているため、要件、何を変更したいのか、システムに付属しているもの、およびその方法がわかります。それを変える。 第三に、このオープンソース製品のデータ構造、コード構造、システム フレームワーク構造、何がコアであり、どこに補助機能があるのかをよく理解しておく必要があります。
簡単に言うと、データベース、コードロジック、ファイルディレクトリに精通していることを意味します。
4番目に、ニーズに応じて、オープンソース製品のコアを使用して、ニーズに合わせてシステムを拡張および変更します。PHPのオープンソース
製品の二次開発のための基本的な要件を紹介します。 最初に、基本的なもの。要件: HTML (十分に精通している必要があります)、PHP (コードを理解して、メッセージ ボードや小規模 CMS などのいくつかの小規模システムを作成できる)、Mysql (少なくとも 1 つのデータベースを知っている)、JavaScript (いくつかのデータベースを理解して作成できる)小規模システム) いくつかの既存のコードを変更する)、p+Css (インターフェースを調整し、CSSがどのように使用されるかを理解できる) 2 番目に、Dedecms などのオープンソース製品の使用方法を知る必要があります。ログインと新しい列の作成方法、記事の追加方法、テンプレート タグの使用方法、モデルの概念と使用法、その他の機能について説明します 第三に、このオープン ソース製品のデータベース構造をよく理解しておく必要があります。また、データベース クラスの使用方法、一般的に使用されるセキュリティ フィルタリングの実行方法、テンプレート エンジンの使用方法、その他のコア コンテンツなど、内部のコア ファイルの内容も理解します。また、このオープン ソース製品のディレクトリ構造を知る必要があります。つまり、テンプレートが配置される場所、コントロールが配置される場所、スタイルが配置される場所などを知る必要があります。 4 つ目は、自分のニーズをよく理解することです。ニーズを解釈し、このオープンソース製品を変更および拡張する方法を決定します 二次開発後に何が得られますか? ここでの経験はあなた自身のものであり、他の人のものです。いわゆる他者の利益とは、この二次開発を行うときに、このシステムのエッセンスを吸収して自分の思考に統合することができ、プロジェクト アーキテクチャの経験を要約することもできます。良いことという言葉がありますが、それは、賢い人は他人の失敗経験を自分の経験として考えるが、愚かな人は何度も失敗を経験した後、それを自分の経験として考えるということです。二次開発は単なる開発ではなく、本質を吸収し、経験を総括し、アイデアを正し、寄り道を避け、自分自身を向上させることが重要です。巨人の肩の上に立つと、さらに先が見えてきます!!!
◆DedeCMS二次開発
より多くの人に二次開発を理解してもらい、より便利にDedeCMSの二次開発を理解してもらうために、開発、以下にDedeCMSの二次開発についての基礎と概要を簡単に紹介しますDedeCMSの二次開発に必要な基礎:
・HTMLにとても詳しい ・p+CSSのレイアウトに詳しい・しっかりとしたPHPの基礎があり、構造化プログラミングに精通し、OOPを理解し、理解して使用できること
・MYSQLに精通し、SQL言語をマスターするDedeCMS二次開発学習プロセス
・CMSとは何かを理解する・DedeCMSのおなじみの機能(列分類、文書管理、モデルの利用、システム設定、その他の共通機能など)・DedeCMSテンプレートタグの使い方と原則をマスターする
・DedeCMSのディレクトリ構造分析 各フォルダに慣れる主にファイルがインストールされるため、二次開発中にどのフォルダーにどのファイルを変更するかがわかりますディレクトリ構造の概要:
./a 生成されたファイルの保存パス./data キャッシュファイルとデータセンター
/admin バックグラウンドデータの管理 /backupdata バックアップデータ /キャッシュキャッシュファイル /enums レベル連携データ、JS、列挙型キャッシュファイル /js よく使うJS /mark ウォーターマーク関連ファイル/module モジュールインストールファイル
/rss Rss関連 /sessions セッション保存パス/textdata テキストデータ
/tplcacheテンプレートキャッシュ
/uploadtmpアップロードファイルキャッシュの場所
/ziptmp zipパッケージ解凍キャッシュの場所
…
DedeCMSファイル構造解析
各ファイルの基本的な機能に精通し、各ファイルの一般的な機能を理解した上で、ファイルを簡単に変更すると便利です
ファイル構造の概要:
common.inc.phpデータベース設定ファイル
config.cache.bak.phpの背景システム構成バックアップ
config.cache.inc.php バックグラウンドシステム構成ファイルキャッシュ
downmix.data.php 難読化されたキャッシュファイルのコレクション
mysql_error_track.inc MYSQLエラーログ
safequestions.php セキュリティ問題
sitemap.html サイトマップ
sys_pay.cache.php決済ゲートウェイ設定
template.rand.phpランダムテンプレート設定
……
・DedeCMSデータベース構造分析、少なくとも各テーブルの役割に精通している
の役割に精通している各テーブルの理解 いくつかのコアテーブルの設計とフィールドの意味により、段落を追加するか、新しい要件に対応するために新しいテーブルを作成するかを迅速に決定することが容易になります。同時に、DedeCMS のデータベース設計アイデアを理解し、有用な設計アイデアを独自のシステムに追加することもできます。
・DedeCMSプロセス制御といくつかのコアファイルの分析
ログイン、登録、ドキュメント管理、権限制御、分類管理、モデル設定などのいくつかの一般的なプロセス制御に精通している。いくつかのコア ファイルを分析して、そのプログラミング スキルとセキュリティ メカニズムを理解します
· DedeCMS プラグイン (**** プラグインおよび組み込みプラグイン) の開発
2 つのプラグインの作成と、プラグインのエクスポート、プラグインやモデルの利用
◆Ecshop二次開発Ecshop二次開発学習方法
近年、インターネットの発展に伴い、電子商取引も成長してきました。 IT、B2B、C2C、B2C 電子商取引モデルも成熟し続けています。この時点で、は多くの電子商取引関連の PHP オープンソース製品を生み出しました。 B2Cに関しては、Ecshop、Zencart、Magentoなど国内外で有名な製品があります。
それでは、Ecshop二次開発を学ぶプロセスと注意すべき点を簡単に紹介します:
Ecshop二次開発に必要な基礎:
・HTMLに非常に精通している ・p+CSSのレイアウトに精通している
・しっかりしたPHPの基礎、構造化プログラミングに精通し、OOPを理解し、理解して使用できること
・Smartyテンプレートエンジンに精通している
・MYSQLに精通しており、SQL言語をマスターしている
Ecshop二次開発学習プロセス・Eコマースの基本概念に精通している ・EcShopの基本機能(商品タイプ、商品分類、商品属性設定、プロモーションの利用など)に精通している
・データベース構造とデータベースをマスターするEcshop の設計アイデア
・ER モデル、エンティティとリレーションシップの確立に精通している
各テーブルの役割に精通し、いくつかのコア テーブルの設計とフィールドの意味を理解しているため、新しい要件を取得した後、単語
を追加するか、新しいテーブル取引を作成するかをすぐに判断できます。同時に、Ecshop のデータベース設計アイデアを理解し、有用な設計アイデアを自分のシステムに追加することもできます
・ファイル構造分析とコード分析
ある程度のログイン、登録、文書管理、権限制御、分類管理、製品に精通しているタイプなど。いくつかの一般的なプロセス制御。いくつかのコア ファイルを分析して、プログラミング スキルとセキュリティ メカニズムを理解します
· Ecshop ファイル構造分析:
includecls_captcha.php: 検証コード画像クラス
includecls_ecshop.php: 基本クラス
includecls_ecshop.php( includeslib_common.php: Common関数ライブラリ
includeslib_goodscat.php: フロントエンド共通関数ライブラリ
includeslib_insert.php: ダイナミックコンテンツ関数ライブラリ
includeslib_main.php: フロントエンド共通関数ライブラリ
includeslib_payment.php: 決済インターフェース関数ライブラリ
includeslib_iconv。 php: 文字セット変換クラス
includesipcls_ip.php: IP位置クエリクラス
includesmodulesintegratesdiscuz.php: メンバーデータ処理クラス
includesmodulesintegratesecshop.php: メンバーデータ処理クラス
Ecshopテンプレートの置き換え
Smartyのバージョン、独自インターフェースの埋め込み、EcShopテンプレート置換スキル
Ecshop二次開発例
中国語と英語の切り替え機能、フラッシュセール機能、JDモールテンプレート制作など
学習目標:1.意志二次開発にはEcshopを使いましょう
2. 通常のテンプレートを変更したり、一部の機能を修正できるようになります
3. 開発経験から学ぶ
基礎知識をマスターする~「書き方の一部を真似する~」 内部のパターンを修正(フォーム)独自の開発モデル)
Ecshop でプログラミングスキルとシステム設計スキルをマスターする
◆キャッシュ技術分析
一般的な PHP キャッシュ技術分析【概念版】
ほとんどの場合、私たちの Web サイトはサイトデータの保存コンテナとしてデータベースを使用します。 SQL クエリを実行するときの一般的な処理プロセスは次のとおりです。データベースに接続します - > SQL クエリを準備します - > データベースから返された結果を取得します - > データベース接続を終了します。ただし、データベース
内の一部のデータは完全に静的であるか、頻繁に変更されません。キャッシュ システムは SQL クエリの結果を高速なストレージ システムにキャッシュして、頻繁なデータベース操作を回避します。また、クエリ結果をキャッシュすることで、次のことも可能になります。後で処理するためです。
一般的に使用されるキャッシュ技術
データ キャッシュ: ここで言うデータ キャッシュとは、ページにアクセスするたびに、まず対応するキャッシュ データが存在するかどうかを検出し、存在しない場合は接続します。データベース、データを取得し、クエリ結果をシリアル化してファイルに保存します
将来的には、同じクエリ結果がキャッシュ ファイルから直接取得されるようになります。
ページキャッシュ:
ページにアクセスするたびに、まず対応するキャッシュされたページファイルが存在するかどうかを検出し、存在しない場合はデータベースに接続してデータを取得し、
ページを表示してキャッシュされたファイルを生成します。ページ ファイルも同時に作成されるため、次回アクセスしたときにページ ファイルが有効になります。 (インターネット上のテンプレート エンジンといくつかの一般的な
キャッシュ クラスには、通常この機能があります)
メモリ キャッシュ:
この記事では簡単に説明する内容ではありません。 Memcached は、データベースの負荷を軽減し、動的アプリケーションのアクセス速度を向上させるために使用される高性能の分散メモリ オブジェクト キャッシュ システムです。
Dbcached は、Memcached と NMDB に基づいた分散キー値データベース メモリ キャッシュ システムです。
上記のキャッシュ テクノロジは頻繁なデータベース クエリの問題を十分に解決できますが、データがタイムリーではないという欠点があります。以下に、私が
プロジェクトでよく使用するメソッドを示します。
時間トリガー キャッシュ:
ファイルが存在し、タイムスタンプが設定された有効期限より小さいかどうかを確認します。ファイル変更タイムスタンプが現在のタイムスタンプから有効期限タイムスタンプ
を引いた値より大きい場合は、キャッシュを使用し、それ以外の場合はキャッシュを更新します。
設定時間内にデータを更新する必要があるかどうかを判断せず、設定時間後にキャッシュを更新します。上記は、適時性の要件が高くない場合の使用にのみ適しています。それ以外の場合は、以下を参照してください。
コンテンツトリガーキャッシュ:
データが挿入または更新されると、キャッシュは強制的に更新されます。
ここで、大量のデータを頻繁に更新する必要がある場合、最終的にはディスクの読み取りおよび書き込み操作が関与することがわかります。それを解決するにはどうすればよいでしょうか? 私は通常、すべてのコンテンツをキャッシュするのではなく、頻繁に変更されない一部のコンテンツをキャッシュして問題を解決します。ただし、負荷が高い場合は、共有
メモリをキャッシュ システムとして使用するのが最善です。
現時点では、PHP キャッシュが解決策になる可能性がありますが、その欠点は、各リクエストを PHP で解析する必要があるため、負荷が高い場合には効率の問題がさらに深刻になることです。この場合、静的キャッシュが使用される可能性があります。 。
静的キャッシュ
ここで言う静的キャッシュとは、HTML キャッシュのことを指します。HTML が通常使用される状況
は、通常、コンテンツが更新されるページであるため、HTML キャッシュは通常、データを更新する必要があるかどうかを判断する必要はありません。頻繁に変更しないこと。データが更新された場合は、HTML を強制的に更新するだけです。
実際、キャッシュ システムには多くの問題が含まれます。ここでは、私の通常のキャッシュのアイデアのみを紹介します。
キャッシュを実装して特定のコードを記述するためのソフトウェアの使用については紹介しません。
何か良い解決策がございましたら、以下に提出して一緒に議論させてください。
◆PHPは関数を使ってコマンドを呼び出しますPHPはexecやsystemなどの関数を使ってシステムコマンドを呼び出します
PHPの組み込み関数execやsystemではシステムコマンド(シェルコマンド)を呼び出すことができ、もちろん関数もありますpassthru やescapeshellcmd など。
多くの場合、PHP の exec、system、およびその他の関数を使用してシステム コマンドを呼び出すと、作業をより適切かつ迅速に完了するのに役立ちます。たとえば、2 日前に .rar ファイルをバッチ処理していたとき、exec は非常に役に立ちました。
今日は、よく使われる通話システムの機能を整理し、私の経験を皆さんと共有します。
注: これら 2 つの関数を使用したい場合は、php.ini のセーフ モードをオフにする必要があります。オフにしないと、セキュリティ上の理由から、php はシステム コマンド
を呼び出すことを許可しません。 まず、PHPマニュアルでこれら2つの関数の説明を見てください:
Exec --- 外部プログラムを実行します
構文: string exec ( string command [, array &output [, int &return_var]] )
説明:
exec() は指定されたコマンドを実行しますが、何も出力しません。
などのコマンドの結果から最後の行を返すだけです。コマンドを実行してコマンドからすべてのデータを取得する必要がある場合は、 passthru() 関数を使用できます。
パラメータ配列が指定されている場合、指定された配列にはコマンドによって出力された各行が書き込まれます。配列にすでに要素が含まれている場合は、後でそれらの要素を配列に追加します。この関数に要素を追加したい場合は、この配列を
exec() に渡す前に unset() を呼び出すことができます。
パラメータ array と return_var が与えられた場合、実行に戻されたステータスコマンドがこの変数に書き込まれます。
注: ユーザー入力からのデータがこの関数に渡されることを許可する場合は、escapeshellcmd() を使用して、ユーザーがシステムをだまして任意のコマンドを実行できないようにする必要があります。
注: この関数を使用してプログラムを開始し、それがバックグラウンドで実行されている間そのプログラムをそのままにしておく場合は、プログラムの出力がファイルまたは何らかの出力データ フローにリダイレクトされていることを確認する必要があります。 PHP はプログラムの実行が終了するまでハングします。
System --- 外部プログラムを実行し、出力を表示します
構文: string system ( string command [, int &return_var] )
説明:
System( ) は、指定されたコマンド command を実行し、結果を出力します。パラメータ return_var が指定されている場合、実行されたコマンドのステータス コードがこの変数に書き込まれます。
注: ユーザー入力からのデータがこの関数に渡されることを許可する場合は、escapeshellcmd() を使用して、ユーザーがシステムをだまして任意のコマンドを実行できないようにする必要があります。
注: この関数を使用してプログラムを開始し、それがバックグラウンドで実行されている間そのプログラムをそのままにしておく場合は、プログラムの出力がファイルまたは何らかの出力データ フローにリダイレクトされていることを確認する必要があります。 PHP はプログラムの実行が終了するまでハングします。
PHPがサーバーモジュールとして実行されている場合、system()は各行を出力した後にWebサーバーの出力バッファを自動的にクリアしようとします。
成功した場合はコマンドの最後の行を返し、失敗した場合は false を返します。
コマンドを実行して、コマンドからすべてのデータを取得する必要がある場合は、 passthru() 関数を使用できます。
これら 2 つはシステム シェル コマンドを呼び出すために使用されます。
違い:
Exc はすべての実行結果を $output 関数 (配列) に返すことができ、$status は実行ステータス、0 は成功、1 は失敗
systermは$output関数を提供する必要はなく、結果を直接返します。同様に、$return_varは実行のステータスコードです。0は成功を意味し、1
は失敗を意味します
◆オープンソースについて
の最大の成功です。オープンソースは Web から来ています
オープンソース運動は非常に人気があり、ソフトウェア開発の歴史に足跡を残しています。しかし、その最も広範な影響はどこにあるのでしょうか? 歴史上最も成功したオープンソース「プロジェクト」は何でしょうか? 実際、全体として、オープンソース運動の最大の成功は Web ではないでしょうか? おそらく最も有名な例は次のとおりです。 Linux、Apache、MySQL、PHP など、隠しドメインの多くの Web サイトの背後にある LAMP。しかし、考えてみると
、さらに多くのことがわかります。
以下は、Web を機能させるいくつかのオープンソース プロジェクトのリストです。
Web ブラウザ - Web ブラウザ
Web ブラウザ市場では、Microsoft のクローズドソース ソフトウェア IE ブラウザが依然として大きなシェアを占めていますが、同様の機能を備えた他のオープンソース プロジェクト
も人気を集めており、成長しています。 Mozilla の Firefox ブラウザと同様です (Flock や PaleMoon と同様にオープンソースです)。 Safari などの Webkit ベースのブラウザも急速に成長していますが、最も有名なのは Chrome です。
モバイルネットワークを含めると、WebkitはiPhone、Android、Blackberry携帯電話のブラウザを独占します。
Web サーバー ソフトウェア - Web サーバー ソフトウェア
これまでのところ、Apache が最も広く使用されているオープンソースですが、近年では Nginx と呼ばれる軽量のサーバー ソフトウェアが普及しています。実際、Web サーバー ソフトウェアの上位 3 つのうち 2 つはオープンソースです (2 位にランクされている Microsoft の IIS は例外ですが、1 位には程遠いです)。
さらに、サーバー側の基盤となるソフトウェアの多くもオープンソースです。たとえば、トラフィックの多い Web サイトの多くは、Web サイト訪問者間のキャッシュ レイヤーとして Varnish を使用し、Web サイト データベース間のキャッシュ レイヤーとして Memcached を使用します。これらは多くの例のうちの 2 つにすぎません。
スクリプト言語とWebフレームワーク - スクリプト言語とWebフレームワーク
インターネットで使用されているプログラミング言語とスクリプト言語のほとんどは、PHP、Perl、Python、Rubyなどのオープンソースです。
しかし、完全にゼロから構築するウェブサイトはほとんどありません。 WordPress、Drupal、Ruby on Rails、Django、Joomla、DedeCMS、Ecshop など、開発者を支援するオープンソースのコンテンツ管理システム (CMS) や Web フレームワーク
が何百もあると言っても過言ではありません。
データベース-データベース
Web サイトのデータベースとしてはオープンソース ソフトウェアの MySQL がダントツで最も人気がありますが、最近数多く登場している「非リレーショナル (NoSQL)」データベースはもちろん、PostgreSQL など同様の機能を備えたオープンソース ソフトウェアも存在します。
基盤となるソフトウェアについて話したので、私たちがインターネットやインターネット上の何かを使用するたびに依存する基本的な
システムについても触れなければなりません:
DNS - ドメイン名解決システム
Web (さらに言えば) ) (インターネット全体は) ドメイン名解決システムがなければ役に立ちません。ご存知のとおり、ドメイン名解決システムを使用すると、ユーザーは IP アドレスの代わりに example.com などのドメイン名を使用できます。 BIND は、DNS サーバー (別名ネーム サーバー) ソフトウェアの事実上の標準であり、もうお気づきかと思いますが、オープン ソースです。
サーバーオペレーティングシステム - サーバーオペレーティングシステム
すべてのWebサイトはサーバー上で実行する必要があり、そこにオープンソースが君臨します。デスクトップ領域では Windows が主流ですが、Web サイトを実行するほとんどのサーバーでは、オープン ソースの Linux オペレーティング システムが使用されています。他に、freeBSD や OpenBSD も人気があります。
オープンソースの誘惑
多くの場合、オープンソースソフトウェアは商用のクローズドソースソフトウェアと同等のパフォーマンスを提供でき、しかも無料であるため、オープンソースソフトウェア
が非常に人気があるのも不思議ではありません。無料というのはなかなか得難い価格です。
もし Web がこのすべてのフリー ソフトウェアで動作しなかったら、おそらく広く受け入れられるのは難しいでしょう。
Web 上にクローズド ソース ソフトウェアが存在しないとは言っていないことに注意してください。明らかに存在します。しかし、統計的に言えば、Web オープンソースの優位性における本当の例外は、Microsoft の Windows ベースの一連のシステムです。
さらに、ルーターや同様のデバイスのオペレーティング システムなど、より独自のクローズド ソース テクノロジーを見つけるには、通常はさらに深く掘り下げる必要があります。しかし、その
はインターネットであり、Web ではありません。
以上がcmsの二次開発に最適なものを詳しく紹介します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。