Fi1osof

Fi1osof

С нами с 05 мая 2014; Место в рейтинге пользователей: #10
Fi1osof
30 января 2016, 15:06
0
И как вообще ведет себя MODX при таком количестве товаров?
Если вы читали мои статьи, то видели, что не раз мы поднимали сайты на десятки тысяч товаров и более. Еще в 2009-ом году я разгонял Рево до 1 000 000 документов. При правильном подходе может очень даже стабильно работать. Вот здесь 145 000 товаров bumparfum.webtm.ru/
Это еще он не оптимизирован до конца, и кеш-провайдер обычный файловый. Можно вполне догнать до 0.1-0.2 сек.
Fi1osof
30 января 2016, 15:03
0
Почти подняли — этого не достаточно. Как и всякий сайт, его придется развивать. А развитие проекта может запросто обойтись дороже, чем поднять. Логика простая — если основа заложена не оптимально, то дальнейшее наращивание функционала может быть серьезно затреднено. К примеру, какую-то логику реализовали не централизованно, а в отдельных сниппетах с копипастом кода. Потом решили нарастить функционал, дописали один из сниппетов. А другой остался как и прежде. То есть уже логика не стабильна. Я подобных случаев насмотрелся кучу.
Fi1osof
30 января 2016, 15:01
0
Сорри за долгий ответ, только добрался до компа.
Причина простая — есть ряд хотелок, реализовать которые на текущем битрикс-сайте выйдет гораздо дороже. Сайт изначально был не качественно сделан, с 5-7 параллельными скинами и прочими неприятностями. Комментарии в коде отсутствуют (впрочем как и в родном битрикс-коде). Традиционно PHP+HTML+CSS+JS вперемешку, что не позволяет отдельно от логики пилить оформление. Сейчас еще и адаптивку делать надо, а это считай весь битрикс-сайт переписывать. В общем, взвесили все За и Против, и решили перенести на MODX. Специально под это сейчас новая версия ShopModx пилится. В среднесрочной перспективе эти вложения окупятся с лихвой.
Fi1osof
29 января 2016, 23:39
0
Переносим сейчас с Битрикса на MODX магазин ~ 30 000 товаров. Цена вопроса 500 000 рэ. Можете прикинуть сколько будет на ваш проект бюджет. Даже если поделить на 5 (у нас ценник не сильно превышает альтернативные студии с примерно таким же уровнем), получится все равно не дешево.
Fi1osof
28 января 2016, 14:27
0
Андрей, вряд ли это можно относить к работе API VK, это вопрос к самому HybridAuth (он же выполняет операции чтения и записи ключей). Почитайте вот эту статью. Поиграйтесь с этой инфой. Уверен, можно так переопределить не только поля, но и таблицу класса (смотрите метод xPDO::getTableName()).
Я сейчас еще кое-какими исследованиями, связанными с этой областью занимаюсь, может сегодня статью выкачу.
Fi1osof
27 января 2016, 19:24
+2
Михаил, дождемся реализации от Льва, он им уже занялся. Наверняка завтра что-то уже покажет. Просто это он у нас больше спец по API соцсетей. А когда будет API с ВК, тогда и в modImporter реализацию докручу, препятствий не вижу.
Fi1osof
26 января 2016, 23:40
+1
Я так же активно переезжаю с океана, ибо в баксах стало очень ощутимо платить. Для себя выбрал neoserver.ru/
Основные За:
1. Тарифы в рублях.
2. Можно по безналу платить.
3. Конструктор конфигураций.
Настройку серверов выполняю нашей технологией.
Fi1osof
26 января 2016, 23:24
+4
Настоящая цена за подобную работу, по прикидкам Витали Дощенко из modstore.pro, примерно 200к рублей.
Бюджетненько ребятам проект достался. Мы бы менее 500к не взялись бы.
Хорошая работа. Можно показывать любому, кто говорит, что на MODX серьезные проекты не создаются.
Fi1osof
26 января 2016, 19:13
0
Вот я потому и не стал пока в этот пакет включать выгрузку, потому что пока вообще не понимаю в чем сложности выгрузки. Это же вообще делается довольно просто. Можете для примера посмотреть как сайтмэп формируется в NewsModxBox.
Можете сформировать более четкие требования к вашей выгрузке, написать мне, я вам завтра ее напишу. Сегодня просто занят буду.
Fi1osof
25 января 2016, 14:46
0
У вас просто не инсталлирован XMLReader для php joxi.ru/V2Vnk1gs0BdaQ2
Fi1osof
25 января 2016, 14:18
0
В данном скрине самой ошибки не видно, есть только остановившийся процесс. Пришлите мне в личку доступ к админке, я посмотрю что там у вас.
Fi1osof
25 января 2016, 13:40
0
Как дела продвигаются? Вопросы решились?
Fi1osof
25 января 2016, 11:45
0
Если выгрузка из 1С идет, то там сама 1С шлет файл на сервер. Если вы вручную прогружаете, то файл надо соответственно самому загружать. Если у вас zip-архив, то в версии 1.1.1 появилась распаковка архивов joxi.ru/ZrJVWD0u1ba4Vr
Fi1osof
25 января 2016, 11:12
0
Очень подробно все расписано здесь.
Создается только 3 новых сущности:
1. Расширяющий процессор, реализующий тонкости именно вашего импорта.
2. Контроллер, в котором прописан вызов этого вашего процессора.
3. Пункт меню, ссылающийся на ваш контроллер.

Приведите код вашего переопределяющего метода StepWriteTmpData.
Fi1osof
25 января 2016, 00:00
0
У большинства, но не у всех. Хотя на счет вариация я согласен — в том же моем подопечном на битриксе товары Товар_1 5 кг, Товар_2 10 кг, Товар_3 20 кг. То есть они и в 1С заведены отдельными позициями. Там для группировки на стороне 1С в каждом товаре прописана своя группа и первый же товар, для которого нет ни одного товара по группе, создается, а все остальные к нему вариациями идут.

По вашему случаю: берите, помогу настроить. Судя по всему у вас можно оттолкнуться от вложенности — если у этой папки нет подпапок, то это товар. А товары прогружать как вариации к товарам. Это не сложно сделать. В том же приведенном примере есть исключение первого уровня (там по сути были производители, и они не нужны были в корне каталога на сайте).
Категории-папки пойдут во временной таблице с типом category, Категории-товары — product, Товары-вариации — variable. У каждого будет свой артикул и parent. По товару-вариации, к примеру, легко получить сам товар.
Fi1osof
24 января 2016, 16:24
+2
Не, на счет адекватности задачам полностью согласен. В жизни выборка 4000 документов и набивка их в чанки крайне маловероятна. А на 10-20 документах разница практически не ощущаема и оверклокингом заниматься нет смысла.
Fi1osof
24 января 2016, 15:53
0
На сколько я понимаю, @INLINE у тебя все равно отрабатывается как чанк? То есть типа такого
$chunk = $modx->newObject('modChunk');
$chunk->code = $inline_code;
$output =  $chunk->process();
return $output;
Или я не прав? Если так, то все равно, хоть и не из базы данных, но все равно объект каждый раз создается. Так не может быстро работать. Вот если модифицировать в такое (упрощенно), то должно быстрее работать.
$output = '';
$chunk = $modx->newObject('modChunk');
while($row = $s->fetch(2)){
	$chunk->code = $inline_code;
	$output .=  $chunk->process();
}
return $output;
Fi1osof
23 января 2016, 10:44
+1
Тестировал в консоли.

1. pdoResources
$output = $modx->runSnippet('pdoResources', array(
    "parents"   => 7,
    "limit"     => 4000,
    "depth"     => 0,
    "showLog"   => 0,
    "tpl"       => '@INLINE {{+id}}-{{+menuindex}}-{{+createdon}}-{{+publishedon}}',
));


2. Smarty + getdata-процессор.
В консоли:
$modx->invokeEvent('OnHandleRequest'); 
$modx->startTime = microtime(true);
$output = $modx->smarty->fetch('test/getdata.tpl');
Шаблон:
{$params = [
    "limit" => 4000
]}

{processor action="web/getdata" ns="modxsite" params=$params assign=result}

{foreach $result.object as $row}
    <p>
        {$row.id}-{$row.menuindex}-{$row.createdon}-{$row.publishedon}
    </p>
{/foreach}


3. Smarty + чистый xPDO
В консоли:
$modx->invokeEvent('OnHandleRequest'); 
$modx->startTime = microtime(true);
$output = $modx->smarty->fetch('test/pure.tpl');

Шаблон:
{$q = $modx->newQuery('modResource')}
{$ok = $q->select(['modResource.*'])}
{$ok = $q->limit(4000)}
{$s = $q->prepare()}
{$ok = $s->execute()}

{while $row = $s->fetch(2)}
    <p>
        {$row.id}-{$row.menuindex}-{$row.createdon}-{$row.publishedon}
    </p>
{/while}


Разница очевидна.

P.S. наверняка феном + чистый xPDO тоже хороший результат покажет.