ホームページ バックエンド開発 PHPチュートリアル PHPデータキャッシュ配列の実装

PHPデータキャッシュ配列の実装

Jun 13, 2016 pm 01:22 PM
data query quot

PHP ファイル キャッシュ配列の実装

パイロット プロジェクトでは、sqlite3 データベースからユーザーにレコードをランダムに読み取る必要があります。現在、読み取るデータ テーブルには 23850 件のレコードがあり、skemu によって分類されています。各 skemu に 3,000 件を超えるレコード 当初、sqlite3 のランダム クエリ ステートメントを使用しました:

$query="SELECT * FROM shiti WHERE skemu = " . intval($kemuid) . " order by random() limit 1";
ログイン後にコピー

その後、今使っているパソコンでは明らかな遅延は感じなかったのですが、サーバーをP4 1.8G 512Mメモリのマシンに変更したところ、データの読み込み速度が非常に遅く感じ、2〜3時間かかりました。データの読み出しが完了するまで数秒かかります。ユーザーがランダムなレコードを取得するたびにこのようなランダムなクエリが実行されると、データベースのクエリ処理にボトルネックが発生し、多くのユーザーによる同時アクセスにそのようなパフォーマンスがどのように適応できるかを想像するのは困難です。このため、データベースのクエリの数を減らすために、まずレコード ID を取り出して配列に入れ、その中からランダムにレコードを選択し、後で読み取れるようにファイルとして保存することを考えました。データベースクエリの数。

次の関数は、ID セットの読み出しを実装します:

 static function getIDs($kemuid)
 {
  $cachefile="cache/" . $kemuid . ".cache";
  $datas=array();
  if (!file_exists($cachefile)||time() < (filemtime($cachefile) + 14400)) 
  //缓存不存在或超过4小时
  {
   global $data;
   //读取 id 集
   $query="SELECT sid FROM shiti WHERE skemu = " . intval($kemuid);
   $res = $data->query($query);
   while($r = $data->fetchArray($res))
   {
    $datas[]=$r['sid'];
   }
   //写入缓存
   file_put_contents($cachefile,serialize($datas));   
  }
  else
  {
   //读出缓存
   $fp = fopen($cachefile,'r');//读   
   $datas = unserialize(fread($fp,filesize($cachefile)));//反序列化,并赋值  
  }
  return $datas;
 }
ログイン後にコピー

<span style="font-family:Arial"><span style="color:#548dd4"><code><span style="font-family:Arial"><span style="color:#548dd4"><span style="color:#366092">调用它的读取随机记录函数:</span></span></span>ランダム レコード読み取り関数を呼び出します:

static function getRondam($kemuid)
 {
  global $data;
  $ids=self::getIDs($kemuid);
  $index=rand(0,count($ids)-1);
  $id=$ids[$index];
  $query="SELECT * FROM shiti WHERE sid = " . intval($id);
  $res = $data->query($query);
  $r = $data->fetchArray($res);
  $r['da']=$s;
  return $r;
 }

ログイン後にコピー

<span style="font-family:Arial">这样比每次执行随机查询快多了,但是还是要比生成一个HTML缓存要慢一点,但那样需要把更多数据暴露给客户端,或是存储更多缓存,我想这已经是一个比较均衡的方案了。</span>

<span style="font-family:Arial">これは、毎回ランダムなクエリを実行するよりもはるかに高速ですが、それでも HTML キャッシュを生成するよりは遅くなりますが、そのためにはより多くのデータをクライアントに公開する必要があります。または、より多くのキャッシュを保存するか、これはよりバランスのとれたソリューションだと思います。 <code><span style="font-family:Arial"></span>

<span style="font-family:Arial"><code><span style="font-family:Arial">这个解决办法的要点在于数组的序列化与反序列化,大家应该很容易看得懂。</span>

<span style="font-family:Arial">このソリューションの重要なポイントは、配列のシリアル化と逆シリアル化にあり、これは誰にとっても簡単に理解できるはずです。 </span>
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Power Query で複数の列をドラッグ アンド ドロップで並べ替える方法 Power Query で複数の列をドラッグ アンド ドロップで並べ替える方法 Mar 14, 2024 am 10:55 AM

この記事では、PowerQuery で複数の列をドラッグ アンド ドロップで並べ替える方法を説明します。さまざまなソースからデータをインポートする場合、列が希望の順序にならないことがよくあります。列の順序を変更すると、分析やレポートのニーズに合った論理的な順序で列を配置できるだけでなく、データの読みやすさが向上し、フィルタリング、並べ替え、計算の実行などのタスクが高速化されます。 Excelで複数の列を並べ替えるにはどうすればよいですか? Excel で列を再配置する方法はたくさんあります。列ヘッダーを選択し、目的の場所にドラッグするだけです。ただし、多くの列を含む大きなテーブルを扱う場合、このアプローチは面倒になる可能性があります。列をより効率的に再配置するには、拡張されたクエリ エディターを使用できます。クエリの強化

React Query データベース プラグイン: データをインポートおよびエクスポートする方法 React Query データベース プラグイン: データをインポートおよびエクスポートする方法 Sep 26, 2023 pm 05:37 PM

ReactQuery データベース プラグイン: データのインポートとエクスポートを実装するためのメソッド、特定のコード サンプルが必要 フロントエンド開発で ReactQuery が広く適用されるようになり、ますます多くの開発者がデータ管理に ReactQuery を使用し始めています。実際の開発では、多くの場合、データをローカル ファイルにエクスポートしたり、ローカル ファイルからデータベースにデータをインポートしたりする必要があります。これらの機能をより便利に実装するには、ReactQuery データベース プラグインを使用できます。 ReactQuery データベース プラグインは一連のメソッドを提供します

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Power Query を使用してデータを NTFS に分割する方法 Power Query を使用してデータを NTFS に分割する方法 Mar 15, 2024 am 11:00 AM

この記事では、PowerQuery を使用してデータを行に分割する方法を紹介します。他のシステムまたはソースからデータをエクスポートする場合、複数の値を組み合わせたセルにデータが格納される状況がよく発生します。 PowerQuery を使用すると、そのようなデータを行に簡単に分割できるため、データの処理と分析が容易になります。これは、ユーザーが Excel のルールを理解しておらず、誤って複数のデータをセルに入力した場合、または他のソースからデータをコピー/ペーストするときにデータの書式が正しく設定されていない場合に発生する可能性があります。このデータを処理するには、分析またはレポート用の情報を抽出して整理するための追加の手順が必要です。 PowerQuery でデータを分割するにはどうすればよいですか? PowerQuery 変換は、単語などのさまざまな要素に基づいて行うことができます。

データフォルダにはどんなデータが入っているのでしょうか? データフォルダにはどんなデータが入っているのでしょうか? May 05, 2023 pm 04:30 PM

データ フォルダーには、ソフトウェア設定やインストール パッケージなどのシステム データとプログラム データが含まれています。データ フォルダー内の各フォルダーは、データ ファイルがファイル名データを参照しているか拡張子を参照しているかに関係なく、異なる種類のデータ ストレージ フォルダーを表します。 , これらはすべて、システムまたはプログラムによってカスタマイズされたデータ ファイルです。データは、データ ストレージのためのバックアップ ファイルです。通常、meidaplayer、メモ帳、または Word で開くことができます。

mysqlのロードデータが文字化けした場合はどうすればよいですか? mysqlのロードデータが文字化けした場合はどうすればよいですか? Feb 16, 2023 am 10:37 AM

mysql ロード データの文字化けの解決策: 1. 文字化けしている SQL ステートメントを見つけます; 2. ステートメントを「LOAD DATA LOCAL INFILE "employee.txt" INTO TABLE EMPLOYEE Character set utf8;」に変更します。

xdata と data の違いは何ですか xdata と data の違いは何ですか Dec 11, 2023 am 11:30 AM

違いは次のとおりです: 1. 通常、xdata は独立変数を指しますが、data はデータ セット全体を指します。2. xdata は主にデータ分析モデルの確立に使用され、data はデータ分析と統計に使用されます。3. xdata は通常、使用されます。回帰分析、分散分析、予測モデリングの場合、さまざまな統計手法を使用してデータを分析できます; 4. xdata には通常、データの前処理が必要であり、データには完全な元のデータが含まれる場合があります。

React Query データベース プラグイン: データのバックアップと復元の戦略 React Query データベース プラグイン: データのバックアップと復元の戦略 Sep 28, 2023 pm 11:22 PM

ReactQuery データベース プラグイン: データのバックアップと復元を実装するための戦略、特定のコード サンプルが必要です はじめに: 最新の Web 開発において、データのバックアップと復元は非常に重要なタスクです。特に ReactQuery のような状態管理ツールを使用する場合は、データのセキュリティと信頼性を確保する必要があります。この記事では、データのバックアップと復元戦略を実装するための ReactQuery に基づくデータベース プラグインを紹介し、具体的なコード例を示します。 ReactQu

See all articles