サーバーサイド開発の簡単な紹介_PHP チュートリアル
数日間サーバーサイド開発に従事してきたので、落ち着いてサーバーサイド開発のアイデアをいくつか考え、記録することができます。
サーバーサイド開発、特に Web 開発は、基本的に HTTP リクエストの処理がすべてです。具体的な用途に応じてWebページ開発とAPIインターフェース開発の2種類に分かれます。 Web ページの開発は API インターフェイスの開発とみなすこともできますが、ページと Ajax リクエストという 2 つの主要な部分があります。1 つは HTML を返すことで、もう 1 つは HTML またはその他の形式を返すことができます。 APIインターフェース開発はクライアント製品向けです。モバイル デバイスの場合もあれば、PC アプリケーションなどの場合もあります。
アプリケーションフレームワーク
アプリケーションフレームワークは通常、LNMPまたはLAMPを使用します。基本的なフレームワークは、フロントエンドN個のWebサーバーマシン+PHPへのCGIアクセス+mysqlへのphpアクセスです。
PHP は、C で書かれた大規模な Web フレームワークとみなすことができます。その利点は、解釈され、リアルタイムで変更および更新できることです。そのため、オンラインでのコード更新やメンテナンスのコストが非常に低く、また一部の機能はほぼWeb開発向けにカスタマイズされているため、Web開発に適しています。 Java で Web サービスを開発する場合に比べれば、時々再コンパイルが必要になる手間は十分にあります。
Web サーバーでは現在、nginx を使用することが増えています。Apache に対する nginx の利点は、その移植性と静的ページの高い同時実行パフォーマンスです。一般に、機器を入手するときは、まず 1 台のマシンが耐えられるおおよその QPS を考慮する必要があります。その方法は、まずメモリのみを考慮し、同時に開くことができる php-cgi の数を計算することです。たとえば、4G メモリを搭載したマシンでは、各 php-fpm は約 20M のメモリを占有するため、ほぼ 200 の php-cgi プロセスを開くことができます (通常、一部は空きのままになります)。各プロセスは同時に 1 つの php プログラムしか実行できません。各 php プログラムが 0.1 秒間実行されると仮定すると、1 秒で 10 個のリクエストを処理できるため、単一マシンの QPS は約 2000 になります。もちろん、通常はそのような極端なレベルまでオンにすることはありません。理由はいくつかあります。
1 他のプロセスのメモリ使用量を考慮する必要がある
2 すべてのメモリが使い果たされたら、スワップを有効にするかどうかを検討する。そうではありません。マシンはすぐにクラッシュしますか
3 CPU と帯域幅の使用状況も考慮する必要があります。暗号化、復号化、ビデオのトランスコーディングなどの CPU 操作には時間がかかります。この時点でキューを使用しないと、各リクエストの時間が長くなります。
ファイルサーバー
通常、分離とは、ファイルサーバーとWebサーバーを分離するために異なるドメイン名を使用することを意味します。もちろん、Webサーバーをファイルサーバーとして使用することもできますが、ファイルサーバーはファイルをアップロードする必要があり、ファイルのアップロードには非常に時間がかかる作業、つまりPHPプログラムが長時間滞留する必要があるため、したがって、それらは分離する必要があります。将来のファイル サーバーの拡張が容易になる一方で、ファイル サービスは通常の Web サービスに影響を与えません。
ファイル サーバーを分割する理由から判断すると、リソースを消費する、または操作中に特に頻繁に呼び出される一部のインターフェイスは、別のマシンに分割することができる、または考慮されるべきです。
Web フロントエンド マシンは常に永続データにアクセスする必要があり、mysql が最も頻繁に使用されます。実際、すべての Web サービスは基本的にデータベースの追加、削除、変更、確認の操作です。パフォーマンスに関しては、データベースの追加、削除、変更、クエリ操作のパフォーマンスがすべてを決定します。したがって、データベースのテーブルとインデックスの使用は、Web サイトにとって特に重要です。私が最も便利だと思う mysql テクニックは次のとおりです:
1 インデックスをカバーします。それは、クエリ操作でテーブルではなくインデックスのみがチェックされるようにインデックスを作成する方法を見つけることです。適切なインデックスと、インデックス内でのみデータを検索できるクエリを作成すると、効率が向上します。
2 挿入操作の効率を向上させるには、InnoDB テーブルで自動インクリメント キーを使用するのが最善です。
3 文字列型変数の保存形式はvarcharとcharのどちらを使用するのが良いのでしょうか? テーブル設計をcharからvarcharに変更した後のデータベースサイズの差が70Gと20Gだったプロジェクトがありました...
4 テーブルを構築するときに考慮する必要があるシャーディング データベースとテーブルをダウンロードした後、シャーディングを使用する場合、シャーディング キーは何ですか?逆引きテーブルが必要ですか?
5 コンピューター室でのデータベースと Web マシンの分散を考慮しても、この設計はさらに面倒になります...
mysql のテーブル作成プロセスは需要と大きく関係しています。明確な要件がなければ、テーブルの設計は間違っているはずです。
データベースのサポートだけでは十分ではない可能性があるため、最初に思い浮かぶのはキャッシュかもしれません。キャッシュはグローバルキャッシュを使用していますか? Web フロントエンド マシンに置きますか?どのようなハッシュ アルゴリズムを使用する必要がありますか?どのキャッシュを使用するか?メムキャッシュ?レディス? MySQL には独自のキャッシュもあります。このキャッシュをより適切にヒットするにはどうすればよいでしょうか?データが更新されたとき、キャッシュ内のデータは汚れていませんか?データを更新するにはどうすればよいですか?
Web ページ開発
Web サイトを構築する必要がある場合、最初に考慮することは、その Web ページに何人のユーザーがいるかということです。 SNSサイトを作るのと、運用バックエンドのサイトを作るのは全く別の概念です。
まず、ページプレッシャーに関して言えば、SNS ウェブサイトの qps は数千、数万になる場合がありますが、操作のバックグラウンドプレッシャーはほぼ計算なしで計算できます。これは、バックエンド データベースのサポートが異なることを意味します。 SNS Web サイトでは、友人関係や個人情報のインターフェイスを呼び出すことがよくありますが、そのようなインターフェイスは個別に処理する必要がありますか?このようなリクエストの多くは繰り返されるでしょう。データベースへの直接的な負荷を軽減するために、ミドルウェアまたはキャッシュの使用を検討する必要がありますか?運用データは通常、単一のテーブルを使用して解決できます。個人的には、運用における統計要件の達成が最も難しいと感じています。まず第一に、統計は統計要件を満たすことができません。このニーズは製品ディスカッションの要件に関連しています。第 2 に、統計には一般にアクセス ログなどの使用が必要であり、これには多くのシェル スクリプトが関与する場合があります。
API開発
実際、Web開発に比べてAPI開発は受動的です。これは、クライアントが携帯電話製品または PC 製品である可能性があることを意味します。多くの場合、リリースとバージョンがあります。これは、API インターフェイスが Web のようにいつでもコードを更新できないことを意味します。さまざまなバージョン間の互換性の問題についてさらに考慮する必要があります。互換性の問題は主に足し算になり、決して引き算されることはありません。個人的には、必要に応じて無制限に対応すると、バージョンが増えるにつれてコード内に if else が増え、最終的にはまったく保守できなくなると感じています。そうなると、他の誰かがあなたの仕事を引き継ぎ、罠に足を踏み入れ、叱りながらリファクタリングすることになります...API 開発はテストに最も依存します。多くの場合、テスターだけが各バージョンに小さな変更を加えますが、小さな機能は無数にあります。
次に、非機能パッケージについて検討します。
インターフェースのパフォーマンスを理解できるように、API 呼び出し時間の統計を保持する必要がある場合があります。
コードは、別のサービスのカーリングなど、他のマシン上のサービスを使用することもあります。この場合、エラー処理とログを考慮することが最善です。
金銭取引を伴うインターフェースサービスの場合、ログ処理はさらに重要です。
一部の内部エラーについては、ユーザーに直接スローしないことが最善であるため、ホワイトリスト エラー メカニズムを使用することが最善です。
インターフェースの暗号化方式には、一般的に少なくとも署名機構が必要です。暗号化方式には、大きく分けて対称暗号化と非対称暗号化があります。暗号化するときは、モバイル クライアントの電力消費など、いくつかの状況を考慮する必要があります。
携帯電話用のインターフェイスを開発している場合は、トラフィックの問題と画像の仕様を考慮する必要があります。
需要の変化はもちろん、ユーザー数の変化だけでも、20万ユーザーと100万ユーザーでは枠組みが違うはずです。当初、100 万人のユーザーをベースにして 20 万人が使用できるフレームワークを設計することはできませんでした。したがって、優れたサーバー側フレームワークは、ユーザー数の変化に応じていくつかの大きな変更を加える必要があります。
…
追記
思いつきでこの記事を書き始めたのですが、書き続けることができないことに気づきました… つまり、Webサービス開発にはまだまだスキルやガジェットがたくさんあります。痛みを知る前に、いくつかの穴を踏む必要があります。かわいいのは、私がまだ落とし穴にはまっていることです...
さらに、インターフェイスのリファクタリングは、ほぼすべてのサーバー開発者が経験する必要があるものです。新しいシステムを開発するのに比べて、インターフェースの再構築の難易度は非常に難しいと言えます。もちろん、ここでの難しさは違和感の度合いとしても理解できます...非常に訓練される作業でもあります。リファクタリングの場合、テストが特に重要です。リファクタリングの正確性を確認するために適切なテスト セットを用意する方法は困難です。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









Pinduoduo ソフトウェアは多くの優れた製品を提供し、いつでもどこでも購入でき、各製品の品質は厳しく管理され、すべての製品は正規品であり、多くの優遇ショッピング割引があり、誰もがオンラインで買い物をすることができます。携帯電話番号を入力してオンラインにログインし、オンラインで複数の配送先住所や連絡先情報を追加し、最新の物流動向をいつでも確認できます さまざまなカテゴリの商品セクションが開き、検索して上下にスワイプして購入および注文することができます家から出ることなく利便性を体験することができます.オンライン ショッピング サービスでは、購入した商品を含むすべての購入記録を確認することもでき、数十のショッピング赤い封筒とクーポンを無料で受け取ることもできます.今回、編集者は Pinduoduo ユーザーに詳細なオンライン サービスを提供しました購入した製品の記録を表示する方法。 1. 携帯電話を開き、Pinduoduo アイコンをクリックします。

この AI 支援プログラミング ツールは、急速な AI 開発のこの段階において、多数の有用な AI 支援プログラミング ツールを発掘しました。 AI 支援プログラミング ツールは、開発効率を向上させ、コードの品質を向上させ、バグ率を減らすことができます。これらは、現代のソフトウェア開発プロセスにおける重要なアシスタントです。今日は Dayao が 4 つの AI 支援プログラミング ツールを紹介します (すべて C# 言語をサポートしています)。皆さんのお役に立てれば幸いです。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot は、より少ない労力でより迅速にコードを作成できるようにする AI コーディング アシスタントであり、問題解決とコラボレーションにより集中できるようになります。ギット

世界初の AI プログラマー Devin の誕生から 1 か月も経たない 2022 年 3 月 3 日、プリンストン大学の NLP チームはオープンソース AI プログラマー SWE-agent を開発しました。 GPT-4 モデルを利用して、GitHub リポジトリの問題を自動的に解決します。 SWE ベンチ テスト セットにおける SWE エージェントのパフォーマンスは Devin と同様で、平均 93 秒かかり、問題の 12.29% を解決しました。専用端末と対話することで、SWE エージェントはファイルの内容を開いて検索したり、自動構文チェックを使用したり、特定の行を編集したり、テストを作成して実行したりできます。 (注: 上記の内容は元の内容を若干調整したものですが、原文の重要な情報は保持されており、指定された文字数制限を超えていません。) SWE-A

Go 言語開発モバイル アプリケーション チュートリアル モバイル アプリケーション市場が活況を続ける中、ますます多くの開発者が Go 言語を使用してモバイル アプリケーションを開発する方法を検討し始めています。シンプルで効率的なプログラミング言語として、Go 言語はモバイル アプリケーション開発でも大きな可能性を示しています。この記事では、Go 言語を使用してモバイル アプリケーションを開発する方法を詳しく紹介し、読者がすぐに始めて独自のモバイル アプリケーションの開発を開始できるように、具体的なコード例を添付します。 1. 準備 始める前に、開発環境とツールを準備する必要があります。頭

Linux でサービスを再起動する正しい方法は何ですか? Linux システムを使用していると、特定のサービスを再起動する必要がある状況がよく発生しますが、サービスの再起動時に実際にサービスが停止しない、または開始しないなどの問題が発生することがあります。したがって、サービスを再起動する正しい方法を習得することが非常に重要です。 Linux では、通常、systemctl コマンドを使用してシステム サービスを管理できます。 systemctl コマンドは systemd システム マネージャーの一部です

jQueryAJAX エラー 403 の問題を解決するにはどうすればよいですか? Web アプリケーションを開発する場合、非同期リクエストを送信するために jQuery がよく使用されます。ただし、jQueryAJAX の使用時に、サーバーによってアクセスが禁止されていることを示すエラー コード 403 が発生する場合があります。これは通常、サーバー側のセキュリティ設定が原因ですが、回避する方法があります。この記事では、jQueryAJAX エラー 403 の問題を解決する方法と具体的なコード例を紹介します。 1.作る

Android 開発は多忙で刺激的な仕事であり、開発に適した Linux ディストリビューションを選択することが特に重要です。数多くある Linux ディストリビューションの中で、Android 開発に最適なのはどれでしょうか?この記事では、この問題をいくつかの側面から検討し、具体的なコード例を示します。まず、現在人気のある Linux ディストリビューション (Ubuntu、Fedora、Debian、CentOS など) をいくつか見てみましょう。これらにはそれぞれ独自の利点と特徴があります。

「VSCode について: このツールは何に使用されますか?」 》初心者でも経験豊富な開発者でも、プログラマーとしてはコード編集ツールを使わずにはいられません。数ある編集ツールの中でも、Visual Studio Code (略して VSCode) は、オープンソースで軽量かつ強力なコード エディターとして開発者の間で非常に人気があります。では、VSCode は正確に何に使用されるのでしょうか?この記事では、VSCode の機能と使用法を詳しく説明し、読者に役立つ具体的なコード例を提供します。
