検索
ホームページバックエンド開発PHPチュートリアルデータベース接続における超常現象に関するディスカッション、シニア、

データベース接続における超常現象について議論しています。経験豊富な専門家が緊急の支援を求めてください。
SAAS モデルの ERP システムを構築しました。現在の方法では、企業ごとにデータベースを構築しますが、共通の PHP スクリプトを使用します。たとえば、私の SAAS 顧客には 50 社の企業があり、これは MYSQL で 50 の DB を構築したことを意味しますが、データ構造はすべて同じです。この場合、PHP スクリプトは 1 セットしかないため、1 か所を変更することは 50 台のシステムをアップグレードすることに相当し、より便利です。
各企業が最初のページにログインするときに、データベースに接続するための PHP スクリプトに SESSION['db'] を保存します。接続された DB の名前は SESSION['db'] です。この会社 データベースを追加、削除、変更し、チェックインするだけです。

今起こっている奇妙なことは、シリアル番号が時折発生することです。たとえば、A 社は最初のページでログインするときに SESSION['DB'] = 'A' を設定し、再度ログインするときに A という名前のデータベース内のユーザー名とパスワードを確認します。データベース内のテーブルを追加、削除、および変更します。しかし、A社がログインして更新すると突然B社のデータになり、その後C社のデータが表示されるということがたまに起こります。この接続では DB が A に固定されているのに、なぜ他のデータベースのデータがエイリアス化されるのか疑問に思いました。

私の最初の分析は、スクリプトがすべて同じであるということは、URL がすべて同じであることを意味します。理論的には、SESSION['db']はページを開くたびに自動的に接続されるので問題ありません。シリアル番号が表示されるので、キャッシュが原因であると思われます。後でインターネットで調べてみると、360 Browser がユーザーのプライバシーとチェーン COOKIE をアップロードしたことが報告されているようで、その時は 360 Browser の動作が原因なのかと疑問に思っていました。

最初の対策として、ドメイン名の汎解決を使用して、各社の URL を異なるものに変更しました。つまり、A 社の URL は A.xxx.com、B 社の URL はb.xxx.com ですが、全体的なフレームワークは同じであり、PHP スクリプトも同じです。この場合、360 が COOKIE をサーバー キャッシュにアップロードしたとしても、URL が異なるため、エイリアスは存在しませんよね。しかし、私はまた間違っていたことが分かりました。午後、別の顧客から電話があり、自社のシステムで他社のデータをどうやって見ることができるかについて問い合わせがありました。私は完全に狂っています。

2 回目の分析ですが、mysql_pconnect() 接続が原因なのでしょうか?企業 A がデータベースへの永続的な接続を確立したと考えています。企業 B のログインも mysql_pconnect() です。APACHE は企業 A によって確立された接続を企業 B で使用するために直接使用しますか?そこで、すぐに pconnect を夜間接続に変更しました。しかし、このデータのシリアル番号が商用ソフトウェアに与える影響はそれほど単純ではないと私は感じています。力を入れすぎて、力が及ばないかもしれません。

もう一度、この奇妙な現象がなぜ起こるのか、専門家に分析を手伝ってもらいます。キャッシュの原因を何度も疑ったのですが、キャッシュされたページが表示されても相互に変更できないはずなので、やはりデータベース接続に問題が発生しているのでしょうか?

私の QQ 番号は 13676987、杭州です。専門家とのコミュニケーションを楽しみにしています。


-----解決策---------
1.SESSION[ ' db'] は $_SESSION['db'] ですか?
2. dbname をセッションに書き込む必要があるのはなぜですか?
各サイトで構成ファイルを使用して異なる情報を記録しないのはなぜですか? たとえば、各サイトに config.php、
define('DBNAME', 'db1');
3. dbに保存されているのでしょうか?
------解決策----------------------
そうであれば、仮想ホストは 50 個になるはずです それは違います。
Apache の Env モジュールを使用します。使用方法は以前書いた記事を参照してください: http://blog.csdn.net/fdipzone/article/details/9388959

仮想ホストに

<br /><IfModule mod_env.c>  <br />SetEnv DBNAME DB1<br /></IfModule> <br />
仮想ホストが異なれば、値の設定も異なります。

次に、config で dbname を設定します。
例: $dbname = 'DB1'; は $dbname = $_SERVER['DBNAME'];

に変更されました-----解決策---------- - --------ヒント: Env を使用して保存されたデータは Web 上でのみ読み取ることができ、php cli モードでは読み取ることができません。特定のニーズに応じて使用してください。

------解決策----------------------データベースの長い接続はデータベース サーバーに対して再利用されます

システム内の他社のデータを確認する方法について
から開始します。: 「初動対応策」から開始します。ドメイン名の汎解決を使用する」は、ユーザー認証が独立していることを示します。 SSO は現在非常に人気があり、あなたもそれを使用している可能性を排除しません
複数の企業が同じソフトウェアのセット (インターフェイスを含む) を変更せずに使用できるため、これらの企業が関与していることがわかります同じ業界で。したがって、A社の人間がB社の人間のログインパスワードを知っている可能性は否定できません
マルチタブ ブラウザを使用して、タブ A で会社 A にログインし、タブ B で会社 B にログインします。タブ A に戻ると、企業 B のデータが表示されます
複数のタブが Cookie を共有し、A によって設定されたセッション ID が B によって変更されたため
実際、受信データは無条件に信頼されます。実装の根拠

第2レベルドメイン名方式を使用する場合、ドメイン名が異なるためCookieは共有されません。しかし、まだシングルサインオンである場合、信頼ドメインのせいで状況は変わりません

現在、データベースの機能を信じず、データキャッシュなどを構築することを好む人が多すぎます(恐れ)
データ キャッシュは主にクエリ名によって区別され、システム内のデータの所属を区別するのはライブラリ名です。混同されるのは普通のことです。



-----解決策---------

引用:
データベースの長い接続は、データベース サーバーへの接続を再利用しますが、データベースへの接続は再利用しません

より、システム内の他の企業のデータを確認する方法開始:
「最初の応答では、ドメイン名の汎解決を使用しています」から、ユーザー ID 検証が独立していることがわかります。 SSO は現在非常に人気があり、あなたもそれを使用している可能性を排除しません
複数の企業が同じソフトウェアのセット (インターフェイスを含む) を変更せずに使用できるため、これらの企業が関与していることがわかります同じ業界で。したがって、A社の人がB社の人たちのログインパスワードを知っている可能性は否定できません
マルチタブブラウザを使用して、タブAでA社にログインし、タブBでB社にログインします。タブ A に戻ると、企業 B のデータが表示されます
複数のタブが Cookie を共有し、A によって設定されたセッション ID が B によって変更されたため
実際、受信データは無条件に信頼されます。実装の根拠

第2レベルドメイン名方式を使用する場合、ドメイン名が異なるためCookieは共有されません。しかし、まだシングルサインオンである場合、信頼ドメインのせいで状況は変わりません

現在、データベースの機能を信じず、データキャッシュなどを構築することを好む人が多すぎます(恐れ)
データ キャッシュは主にクエリ名によって区別され、システム内のデータの所属を区別するのはライブラリ名です。混乱するのは普通のことです。


問題はキャッシュにあるということですか?毎回データベースに接続していれば問題ないのでしょうか?
------解決策----------------------
キャッシュを使用しない場合、問題が解決される可能性があります存在する 1 つの側面
$_SESSION['db'] を信頼するだけでなく、ユーザーのソースを特定する方法が少なくとも 1 つある場合は、問題の考えられる側面を 1 つ取り除くことができます
既知の潜在的な問題は排除されましたが、問題は解決されていません
つまり、未知の潜在的な問題がまだ存在しており、それは議論する必要がある問題です

ポスターも同じ意味です。そして彼は、あなたが知っている考えられる問題をリストアップして、トラブルシューティングできるようにしてほしいと願っています
それらを解決する方法については、別の日の話になります。問題は見つからず、解決策は無駄です

Quote:
問題がキャッシュにあるということですか?毎回データベースに接続していれば問題ないのでしょうか?

-----解決策---------------------------- -
データベースリンクも再利用されている可能性はありますか?
絶対に不可能です

特に SESSION['DB'] が何らかの不明な理由でクリアされた場合はどうでしょうか?
SESSION['DB'] がクリアされている場合、mysql_select_db('') を実行するのと同じですが、これは失敗します (データベースが選択されていません)

私が話しているキャッシュはキャッシュを指しますプロジェクトの機能
通常、クエリ結果をキャッシュするために使用され、頻繁なアクセス中にデータベースを読み取りません

第 2 レベルのドメイン名が使用されている場合、第 2 レベルのドメイン名はデータベース名
----- -解決策---------
お気に入り~~~~



-----解決策---------
マーク、通り過ぎる初心者そこから学びましょう
私がこれを作るとしたら、顧客用に個別のテーブルを作成し、各データ テーブルとインデックスに顧客 ID フィールドを追加して、顧客を追加するためのシンプルな一般的な背景を作成します。これは管理に便利です。 ~
xxx で変数をフィルタリングする場所にフロントのモデル層を渡すと、一律に顧客 ID = xxx を追加します~ しかし、この方法のデメリットがよくわかりません


------解決策----------- ----------
引用:
引用: 引用:

ヒント: Env を使用して保存されたデータは Web 上でのみ読み取ることができ、php cli モードでは読み取ることができません。特定のニーズに応じて使用してください。

50 個の仮想ホストは使用せず、ドメイン名の汎解像度を使用したのは 1 つだけです。すべての第 2 レベルのドメイン名が仮想ホストを指すようにします。


当然のことですが、提供される情報はそれほど多くありません。分析するのは難しいですが、上司はすでにより包括的に分析しています。
------解決策----------------------
ドメイン名に基づいています。 $_SERVER[' HOST'] どのデータベース接続を使用するかを決定しますか?

コードリファレンスのその部分を提供していただけますか?
------解決策------------------
私の現在のアプローチは、会社ごとに 1 つを使用することです 独立
会社 a は http://a.xx.com を使用します
会社 b は http://b.xx.com を使用します

セッションはドメインを越えません。現在、複数の企業間でのデータの文字列の問題は発生していません。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版

SublimeText3 中国語版

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