PHP: Насколько эффективно кэширование загруженных данных в переменных c или свойствах класса? - PullRequest
0 голосов
/ 21 января 2020

Я столкнулся как с функциями, так и с методами класса, которые сохраняют загруженные данные в переменную c или свойство класса по идентификатору и проверяют, существует ли идентификатор в переменной / свойстве, прежде чем продолжить. Если идентификатор существует, он возвращает «кэшированные» данные из переменной / свойства. Если это не так, он загружает данные и затем сохраняет их в переменной / свойстве.

class MyProducts {
  public $products = array();

И тогда метод загрузчика выглядит так:

public function loadProduct($product_id) {
  if(isset($this->products[$product_id])) return $this->products[$product_id];
  // otherwise do all the data loading into $product_data; pretend code is
  // here to pull data; now store it
  $this->products[$product_id] = $product_data;
}

Я также видел, как это делается непосредственно в такой функции:

function loadProduct($product_id) {
  static $myproducts = array();
  if(isset($myproducts[$product_id])) return $myproducts[$product_id];
  // otherwise do all the data loading into $product_data; pretend code is
  // here to pull data; now store it
  $myproducts[$product_id] = $product_data;
}

Насколько это эффективно и как долго сохраняются "кэшированные" данные? Я попытался прочитать несколько статей на эту тему и все еще в замешательстве. Я знаю, что мы используем memcache, и в некоторых статьях, которые я читал, упоминалось об этом.

Спасибо!

...