waVarExportCache и shopColorValue Есть решение

2
'test_feature' =>
  array (
    6479 =>
    array (
      'image' => '/wa-data/public/shop/features/images/298_6479_varchar.jpg',
      'value' =>
      shopColorValue::__set_state(array(
         'code' => '12632256',
         'value' => 'Хром',
         'id' => '1586',
         'sort' => '16',
         '_data' => NULL,
         'feature_id' => '227',
         'photoLink' => '',
      )),
    ),
  ),

вот такой код при использовании waVarExportCache и попытке его достать из кэша даст 500-ю(php5.6.31), но в логах ничего не будет, так как в readFromFile у нас
$r = @include($file);

Наверное надо в try/catch, либо в доке описать, что юзать в таких случаях лучше waSerializeCache?

3 комментария

  • +1

    В документации написано, какие PHP-функции приведения данных в строковый формат использует каждый из классов waSerializeCache и waVarExportCache. А разработчик сам выбирает для себя тот вариант, который подходит для конкретной задачи — зная, данные какого типа он собирается кешировать и какой результат возвращает каждая из этих функций для этих типов данных, чтобы его было удобно и безопасно использовать... В общем, надо просто самому смотреть, что лучше подходит в данном случае.

    • +1
      Николай Иванов Николай Иванов Сегодня 17:44 #

      Ну это не совсем так, да и я говорил о другом.
      var_export() также позволяет хранить объекты. И в большинстве случаев он делает это без особых проблем. Но в некоторых, возможно редких случаях, возникает 500 ошибка при обратной операции извлечения из файла инклудом. Что не есть хорошо, так как стоит "@" подавляющая любой вывод ошибки. Я нашел в чем косяк за 10 минут, а кто-то может потратить на это день-два и слечь в больничку с нервным истощением. Поэтому считаю что нужно делать try/catch.

      • +1

        @ там для подавления ошибок, связанных с чтением файла на разных файловых системах и их конфигурациях. В качестве побочного эффекта она заодно подавляет и ошибки, связанные с интерпретацией собственно данных из файла. Пока что хорошего способа игнорирования одних ошибок и пропускания других не удалось придумать. Если есть конкретное предложение, как изменить код чтения кеша, стоит оформить его в виде пулл-реквеста — посмотрим.

        Добавить комментарий

        Чтобы добавить комментарий, зарегистрируйтесь или войдите