Esempio n. 1
0
 /**
  * @override
  * @see \Magento\Framework\App\Action\Action::execute()
  * @return \Magento\Framework\Controller\Result\Raw
  */
 public function execute()
 {
     /**
      * 2015-11-29
      * @see \Magento\Framework\App\Response\Http::setNoCacheHeaders()
      * https://github.com/magento/magento2/blob/2.0.0/lib/internal/Magento/Framework/App/Response/Http.php#L133-L138
      */
     df_response_code(200);
     df_response_content_type('image/' . $this->type());
     df_response_cache_max();
     df_response_headers(['Content-Transfer-Encoding' => 'binary', 'Content-Length' => strlen($this->contents())]);
     $this->_actionFlag->set('', self::FLAG_NO_POST_DISPATCH, true);
     return df_controller_raw($this->contents());
 }
Esempio n. 2
0
 /**
  * 2015-12-09
  * На странице может быть сразу несколько данных элементов управления.
  * Возникает проблема: как синхронизировать их одновременные обращения к серверу за данными?
  * Проблемой это является, потому что генерация образцов шрифтов —
  * длительная (порой минуты) задача со множеством файловых операций.
  * Параллельный запуск сразу двух таких генераций
  * (а они будут выполняться разными процессами PHP)
  * почти наверняка приведёт к файловым конфликтам и ошибкам,
  * да и вообще смысла в этом никакого нет:
  * зачем параллельно делать одно и то же с одними и теми же объектами?
  * Эта проблема была решена в серверной части применением функции @uses df_sync
  * @override
  * @see \Magento\Framework\App\Action\Action::execute()
  * @return Json
  */
 public function execute()
 {
     df_response_cache_max();
     $this->_actionFlag->set('', self::FLAG_NO_POST_DISPATCH, true);
     return df_sync($this, function () {
         return Json::i(Cache::i(null, 30 * 86400)->p(function () {
             return df_json_encode(['sprite' => $this->sprite()->url(), 'fonts' => array_filter(df_map(function (Font $font) {
                 return array_filter(array_map(function (Variant $variant) {
                     return $this->sprite()->datumPoint($variant->preview());
                 }, $font->variants()));
             }, _Fonts::s()))]);
         }, __METHOD__, df_request(), null));
     });
 }