1

oldnavy.caで1ページのチェックアウトシステムを理解しようとしています。

時間をかけてカートに物を入れて、それがどのようなものかを見て回っていただければ幸いです。

私を混乱させるのは、ページを更新するとプロセスの現在の状態が保存されることです。したがって、サインイン名を作成して配送先住所を追加すると、更新を押すとそこに表示されます。

多くの記事を読むと、セッション変数を使用して大量のデータを格納することは、優れたプログラミングとは見なされないように思われます。さて、出荷情報などのフォームデータの保存は「大量の」データと見なされますか?

このカートシステムはどこでも使用されており、機能する場合はセッション変数を使用することを躊躇したくないので、彼らがこのカートシステムをどのように実装したかを知りたいだけです。

たぶん、使用中の代替手段がありますか?

ありがとう

4

1 に答える 1

0

これに対する難しい答えはなく、ガイドラインだけです。

標準のPHPセッションを使用する場合、アクティブなセッションごとに1つずつ、サーバーのディスク上のプレーンファイルに保存されます。これは、ページが読み込まれるたびに、関連するセッションファイルがディスクからメモリに読み込まれることも意味します。「多すぎる」とは、多くの要因によって異なります。

  • ファイルをディスクからメモリに読み込むのにどのくらい時間がかかりますか?
  • ディスクキャッシングは毎回物理ディスクアクセスを防ぐことができますが、ファイルが大きいほどディスクキャッシュに含まれるファイルは少なくなります。
  • データはRAMにどのくらいのメモリを使用していますか?
  • データをシリアル化してディスクに書き戻すのにどのくらい時間がかかりますか?
  • PHPが常にディスクからの読み取りとディスクへの書き込みを行う必要がある同時ユーザーは何人いますか?
  • セッションはどのくらいアクティブですか。つまり、ガベージコレクションされる前に、ディスクの周りにいくつのセッションファイルが散らばっていますか。

典型的な小さなウェブショップ(Amazonサイズではない)の場合、答えはファイルベースのセッションは通常完全に問題ないということです。おそらく、各ファイルに最大数十キロバイトを保存することになります。これは、ユーザーのアドレスデータと買い物かごを保持するのに十分です。これで問題が発生することはほとんどありません。

あるいは、単に他のセッションハンドラーがあります。それらをmemcacheストアまたはデータベースに保持できます。これにより、ファイルベースの問題の多くが軽減されます。どのソリューションが状況により適しているかを評価します。

于 2012-09-11T14:35:37.157 に答える