Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 145 комментариев

Wassi Wassinen
Wassi Wassinen
Понял. Раз уж зашел разговор про галерею, подскажи, если есть минутка. :) Как вытаскивать в шаблон товара (вне сниппета минишоповской галереи) первую картинку товара? Весь мозг сломал. Нужно для подстановки картинок в «лайки» и прочую лабудень.

Заранее благодарен.
Николай
Николай
Я не нашел никаких следов сайта — даже все конфиги у других сайтов просмотрел…
Пока просто создал эту папку m-c чтоб сайты не лежали…
Может кэш какой есть у этого дела?
ps восстановил полностью вчерашний бекап, а том тоже 502, поудивлялся знатно )
Антон Мамрашев
Антон Мамрашев
Итак окончательное решение проблемы:
выставляем в настройках cache_db_prefix=sitename_ и cache_prefix = sitename_
загружаем в /var/www/nwstroy/www/core/xpdo/cache обновленный класс обработчик кеша

<?php
/*
 * Copyright 2010-2013 by MODX, LLC.
 *
 * This file is part of xPDO.
 *
 * xPDO is free software; you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option) any later
 * version.
 *
 * xPDO is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * xPDO; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
 * Suite 330, Boston, MA 02111-1307 USA
 */

/**
 * Provides an APC-powered xPDOCache implementation.
 *
 * This requires the APC extension for PHP, version 3.1.4 or later. Earlier versions
 * did not have all the necessary user cache methods.
 *
 * @package xpdo
 * @subpackage cache
 */
class xPDOAPCOneFushCache extends xPDOCache
{
	public function __construct(& $xpdo, $options = array())
	{
		parent :: __construct($xpdo, $options);
		if (function_exists('apc_exists')) {
			$this->initialized = true;
		} else {
			$this->xpdo->log(xPDO::LOG_LEVEL_ERROR, "xPDOAPCCache[{$this->key]}: Error creating APC cache provider; xPDOAPCCache requires the APC extension for PHP, version 2.0.0 or later.");
		}
	}

	public function add($key, $var, $expire = 0, $options = array())
	{
		$added = apc_add(
			$this->getCacheKey($key),
			$var,
			$expire
		);
		return $added;
	}

	public function set($key, $var, $expire = 0, $options = array())
	{
		$set = apc_store(
			$this->getCacheKey($key),
			$var,
			$expire
		);
		return $set;
	}

	public function replace($key, $var, $expire = 0, $options = array())
	{
		$replaced = false;
		if (apc_exists($key)) {
			$replaced = apc_store(
				$this->getCacheKey($key),
				$var,
				$expire
			);
		}
		return $replaced;
	}

	public function delete($key, $options = array())
	{
		$deleted = false;
		if (!isset($options['multiple_object_delete']) || empty($options['multiple_object_delete'])) {
			$deleted = apc_delete($this->getCacheKey($key));
		} elseif (class_exists('APCIterator', true)) {
			$iterator = new APCIterator('user', '/^' . str_replace('/', '\/', $this->getCacheKey($key)) . '/', APC_ITER_KEY);
			if ($iterator) {
				$deleted = apc_delete($iterator);
			}
		}
		return $deleted;
	}

	public function get($key, $options = array())
	{
		$value = apc_fetch($this->getCacheKey($key));
		return $value;
	}

	public function flush($options = array())
	{
		$flushed = false;
		if (class_exists('APCIterator', true) && $this->getOption('flush_by_key', $options, true) && !empty($this->key)) {
			$cache_prefix = $this->getOption('cache_prefix', $options);
			if (!empty($cache_prefix)) {
				$iterator = new APCIterator('user', '/^' . str_replace('/', '\/', $this->key) . '\/' . str_replace('/', '\/', $cache_prefix) . '/', APC_ITER_KEY);
			} else {
				$iterator = new APCIterator('user', '/^' . str_replace('/', '\/', $this->key) . '\//', APC_ITER_KEY);
			}
			if ($iterator) {
				$flushed = apc_delete($iterator);
			}
		} else {
			$flushed = apc_clear_cache('user');
		}
		return $flushed;
	}
}


меняем настройку cache_handler на cache.xPDOAPCOneFushCache
очищаем папку /var/www/nwstroy/www/core/cache и кеш apc в apc.php

все, теперь при очистке кеш удаляется только на одном из сайтом, с помощью доработанной функции flush в cache.xPDOAPCOneFushCache
Виталий Батушев
Виталий Батушев
Как я понимаю, бравзер Chrome? Проблема в плагине Adobe Flash Player.
Не знаю уж зачем, но Chrome хранит кучу версий этого плагина в разных местах своего присутствия.
Скажем, в C:\Users\User\AppData\Local\Google\Chrome\User Data\PepperFlash лежало у меня две версии PepperFlash (встроенный плагин Adobe Flash Player). А в C:\Program Files (x86)\Google\Chrome\Application\27.0.1453.110\PepperFlash еще один! При этом корректно работает только последний, к тому же и версия его оказалась самой свежей. То есть первые два я убрал из этой папки в другую (не люблю сразу удалять), перезапустил хрома и увидел, что работает тот, что в Program Files. Проверил работу с MS2 Gallery — все работает как надо. Но от флеша, мне кажется, разработчикам стоит отказаться.