ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用した API 開発の経験 1 つ

PHP を使用した API 開発の経験 1 つ

WBOY
WBOYオリジナル
2016-06-13 12:17:351135ブラウズ

PHP を使用した API 開発のちょっとした経験

この記事は、自分でいくつかの APP インターフェイスを開発し、いくつかの情報を読んだ後の私の個人的な経験です。

1. 関数モジュールの設計

要件分析から対応する関数を抽出する この部分は、プログラマーがこのアプリケーションに実装する必要がある関数に直接関係します。例: 登録とログイン。


2. アプリケーション アーキテクチャの設計

  • アプリケーション全体のアーキテクチャは C/S モードです。クライアントは Android と IOS を使用し、サーバーはサーバー側開発言語を使用して対応するインターフェイスを提供します。次に、クライアントは HTTP プロトコルを通じて対応するリクエストを取得または送信します。
  • クライアントとサーバーが配信に使用するプロトコルの形式を決定します。通常はjsonを使用します。
  • 次に、サーバーが使用するアーキテクチャを決定します。たとえば、最下層は mysql を使用し、中間層はユーザーにさまざまなサービスを提供し、最上層はクライアントが使用するインターフェイスをカプセル化します。管理バックエンドを提供します (すべてのモバイル アプリケーションが管理バックエンドを必要とするわけではありません)

3. 通信プロトコルの定義原則

1. 普遍性、初期段階設計は状況をできるだけ包括的に考慮する必要があります。そうしないと、開発期間後にプロトコルを変更するのが非常に面倒になります。あるいは、やりくりするために、面倒なデータ解析が必要になり、プロトコルの冗長性が高まります。
2. 単純さ、モバイル端末とサーバーはネットワークを介して送信されます。プロトコルが単純であればあるほど、配信速度は速くなります。エクスペリエンスが向上します
3. 互換性の問題に対するエンコーディングの統合。一般に、クライアントとサーバーは現在 UTF-8 エンコーディングを使用しています。
個人的に採用されたプロトコル形式:

<code class=" hljs json">{    "<span class="hljs-attribute">code</span>":<span class="hljs-value"><span class="hljs-string">"正确或者错误的代码号"</span></span>,    "<span class="hljs-attribute">message</span>":<span class="hljs-value"><span class="hljs-string">"对应代码号的提示信息"</span></span>,    "<span class="hljs-attribute">data</span>":<span class="hljs-value"><span class="hljs-string">"返回的数据内容"</span></span>}</code>

返されるデータ領域には、単一オブジェクト データ、同じデータの複数オブジェクト、単一オブジェクトと複数オブジェクトの 3 つの状況が考えられます。 -対 1 のオブジェクト データ。

4. データベース設計

これは必須であり、これ以上言う必要はありません。ここで述べておく必要があるのは、必要に応じて冗長フィールドを追加すると、クエリ速度が大幅に低下するということです。したがって、アウトラインを設計する際に適切に考慮することができます。

5. サーバー側プログラムのアーキテクチャ設計 (ここでは php を説明に使用します)

  1. どの php フレームワークが下部に使用され、どのテンプレート解析エンジンが使用されますか?
  2. アプリケーション ライブラリ層全体
  3. 最上位層はアプリ MVC 層 (つまり、API インターフェイス)

6. クライアント プログラム アーキテクチャの設計

クライアントは Andorid または IOS のコアにあり、クラス ライブラリに基づいて構築されます。上位層のアーキテクチャを定義する必要があり、下位層は対応するモバイル システムによって定義されています。
Android、IOS、その他のモバイル システムを問わず。個人的には、このアーキテクチャには次の部分が含まれるべきだと思います:
画像操作 (アップロード、参照、削除) など、使用されるツール クラス。ファイル操作など
テスト関連クラス、主に自己テスト用のテストコード
UI 関連クラス、MVC の View 層
Model クラス、MVC の Model 層
Service クラス、および All サービス関連クラス
SQLite データベースの操作クラスを格納する Sqlite クラス (すべてのアプリケーションで必要なわけではありません)

7. パフォーマンスの向上

  1. ストレス テスト: Apache ab ツールを使用。環境変数に追加します。ターミナルを開いてabコマンドを入力して操作します。
    パラメータの説明: -n リクエストの総数 -c 同時リクエストの数 -p POST リクエスト ファイル -t POST リクエスト ヘッダー
    例: ab –n 100 –c 10 http://api.com/index 通常use 10 インターフェイスのパフォーマンスを大まかに見積もるには、100 個のリクエストを同時に完了します。
    1. 言語の観点からの最適化
      a. include と require を減らす: この問題は、APC コンポーネントをインストールすることで解決できます。
      b. グローバル変数の代わりにローカル変数を使用します。
      c. 静的関数またはメソッドを使用してみてください: 静的​​メソッドは実行速度を向上させます
      d. 未使用の変数またはリソースを解放します: PHP のメモリ リサイクル メカニズムに過度に依存しないでください。プログラム内の未使用の変数またはリソースは適時に解放されます。 unset を使用するか、直接 null に設定することができます。
      e. 二重引用符の代わりに一重引用符を使用します。
      [email protected]。
      g. PHP では正規表現は効率的ではないため、できるだけ使用しないでください。
      h. 保存されたデータを可能な限り圧縮します。
      i. 新しい PHP バージョンにアップグレードします。
    2. 構造レベルの最適化
      キャッシュ ミドルウェア: Memcache と Redis を使用します。主に読み取りを高速化し、データベース クエリの負荷を軽減します。
    3. 圧縮データ
      gzip は主に PHP の圧縮に使用されます
    4. その他の最適化方法
      a. それに応じてサーバーを構成します。 Linuxサーバーに移行します。
      b. データベースの最適化 (可能な限り決定論的なクエリ ステートメントの使用、インデックス、マスター/スレーブ データ構造 (マスター/スレーブ)、クラスターなどの確立)。
      c. サーバーの帯域幅を増やし、適切な通信事業者を選択します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。