timo-71

Рейтинг
63
Регистрация
19.09.2018
totamon:
Websites about Piggy can be done only on the Bitrix => Websites can only be done on the Bitrix

And I realized that Bitrix - MMR is for about Piggy sites: D 🍿

ziliboba0213:
to carry on the good this topic in the profile section A better smoking room ..

Keep. Here the "master", with the full sweep, and the fact that smoothed out the smoking room in the "glory"

ArbNet:
Конечно на отдельной странице. А в визуальном редакторе контента будет при необходимости всплывающие или модальные окна и др

Стоит посмотреть в сторону управления сайтом на основе апи.

Видюху (без слов) набросал для иллюстрации. Резкими движениями мышки акцентировал наиболее важные, с моей точки зрения, моменты.

Aisamiery:
Глупости говорите, если человек хочет развиваться его ничего не ограничивает.

В темах про ВП странная ситуация - несколько человек на этом форуме, в разделе "веб строительство" иногда говорят: "Мир не заперт в рамках ВП, много всего есть". И оно активно развивается. Казалось бы - юзай. Но, нет.

Для примера

--------------

Тут есть человек, который за python пропагандирует. Его троллят часто. Но, отличный инструмент.

код на коленке

результат в браузере

Тест ab -n 3000 -c 100 Нормализация (-стоп слова) сообщения на недорогом железе.

Requests per second:    241.22 [#/sec] (mean)

Любому это доступно. Легко

если человек хочет развиваться его ничего не ограничивает
Почему вы прикрываетесь темой, если я отвечаю на конкретно ваш вопрос, вы не понимаете что человек не согласился не потому что денег мало, а из-за задачи. Зачем вы вообще прикрываетесь WP как чем то отдельным от web-разработки. Про WP мне сказать нечего, отсутствие архитектуры, отсутствие вменяемого ядра с удобными инструментами для разработчиков, отсутствие тестов, всё это боль для разработчиков, по крайней мере как мне кажется, но никто не говорит о том что это боль для домохозяек, пусть они участвуют, почему нет то? WP одна из лучших блоговых платформ и контентных сайтов для людей далеких от разработки, но эти люди должны признать что они домохозяйки, просто продвинутого уровня.

['почему_ADVB', 'прикрываться_VERB', 'тема_NOUN', 'отвечать_VERB', 'конкретно_ADVB', 'понимать_VERB', 'согласиться_VERB', 'деньга_NOUN', 'задача_NOUN', 'зачем_ADVB', 'прикрываться_VERB', 'wp_Non', 'отдельный_ADJF', 'web_Non', 'разработка_NOUN', 'про_PREP', 'wp_Non', 'нечего_NPRO', 'отсутствие_NOUN', 'архитектура_NOUN', 'отсутствие_NOUN', 'вменяемый_ADJF', 'ядро_NOUN', 'удобный_ADJF', 'инструмент_NOUN', 'разработчик_NOUN', 'отсутствие_NOUN', 'тест_NOUN', 'боль_NOUN', 'разработчик_NOUN', 'крайний_ADJF', 'мера_NOUN', 'боль_NOUN', 'домохозяйка_NOUN', 'пусть_CONJ', 'участвовать_VERB', 'wp_Non', 'хороший_ADJF', 'блоговый_ADJF', 'платформа_NOUN', 'контентный_ADJF', 'сайт_NOUN', 'человек_NOUN', 'далёкий_ADJF', 'разработка_NOUN', 'должный_ADJS', 'признать_INFN', 'домохозяйка_NOUN', 'продвинуть_PRTF', 'уровень_NOUN']
Jazi:
Не 3 млн., а 400к объявлений в фидах надо грузить и обновлять если они обновились

Сомневаюсь, все 400к каждые 4 часа изменяются.

Jazi:
Грузите хотя бы раз

И в 1-й раз не обязательно все 400к грузить. Зачем на новой доске столько?

Но, даже если так - задача решаемая.

Эксперимент (железо впс 1гиг, 1ядро) чтобы не быть голословным

16 сек на обновление данных по

Groups:40; Goods:11620; Personal:3; Time/Mem:15434.2420(ms)/mb16----

40 категориям, 11620 товарам, 3 менеджерам. (нестандартный 1с обмен)

400000/10000 = 40 раз по 16 секунд. ~ 11 минут.

По картинкам:

11 files saved, Prepared: 11; tm:9994.9050(ms)----

11 за менее чем 10 сек. Что делается с картинками за это время:

Сначала достаются из filename=import_files.zip

'thumbs' => [
        'xs'         => '200x150', /* thumbs xsmall - phones       (<768px)) */

'sm' => '300x200', /* thumbs small - tablet (≥768px, <992px) */
'md' => '400x300', /* thumbs medium - desctop (≥992px, <1200px) */
'lg' => '600x450', /* thumbs large - large-desctop (≥1200px,) */
'web' => '800x533' /* */
],

5 тумбов + оптимизация оригинала и всех производных

switch( $this->type ) {

case 'jpeg':
case 'jpg':
$cmd = 'jpegoptim ' . escapeshellarg($this->src) .' --strip-all --all-progressive -m 76';
break;
case 'png':
$cmd = 'pngquant --strip --quality=65-85 --ext .png --force 256 ' . escapeshellarg($this->src);
break;
}

(Гугла доволен)

Какие картинки в эксперименте

немаленькие, в среднем более 1мб (42 на 49,9Миб)

Что в итоге:

С картинками, да сложнее:

Если 1 в секунду, то если 6 млн / 86400 = ~ 70 суток. Но, тут жесткие условия эксперимента (1гиг, 1ядро). А железо сейчас недорогое..

Но и тут, если оставить 1 превьюшку, то

----progress 11 files saved, Prepared: 11; tm:3382.8290(ms)----

в 3 раза меньше времени надо. А если железа добавить и pthreads, то ☝

Я в тему только зайти пытаюсь. Присматриваюсь.

Картинко из загрузки:

jpg 20150416_145641.300x200.jpg
Jazi:
Ну поиск не сложно сделать

Тем не менее, мало где хороший поиск.

Jazi:
фасеты

Сложнее для каждой категории определить удобный набор параметров по которым фильтровать. А то чаще


Защитная маска для лица 18 ₽
ремонтные работы и декоративная штукатурка 10 ₽
Газгольдер под ключ в Москве и Московской области 90 000 ₽
Ремонт квартир в Москве 4 500 ₽

по цене фильтруют. Что даст пользователю сортировка, в результате которой "Защитная маска для лица" будет выше "Газгольдер под ключ в Москве" для меня неясно.

Jazi:
На мой взгляд, сложно будет когда у вас импортируется 400к-500к объявлений из разных источников раз в 4-6 часов

3 млн в сутки? Откуда столько🍿

Ну и, да - вы только дополняете ответ на свой же вопрос

Jazi:
А что сложного?
Jazi:
А что сложного?

Выше говорили - поиск, рубрики, фильтры. Добавлю гео.

Простой пример, когда пользователю сложно будет найти что то.

Solmyr:
В начале этого топика я говорил, что проблема "сделать нормальный поиск". Сейчас могу сказать что нормальный поиск можно сделать с помощью elasticsearch. Ну а если нужно не очень нормальный, а средненький, но очень быстрый - то sphinx.

Если, не очень большая база, то вполне годно использовать фулл-текст индекс, который есть наверное у всех субд. Я пользуюсь Скулайт и Монго. И там и там хороший прогресс за последние годы. К примеру FTS5 sqlite существенный шаг вперед относительно FTS3.

Монга: 5 мс на поиск фразы "бурильный кран камаз 43118" в тестовой коллекции из 45624 объектов. 2,5 определить кол-во найденных и примерно столько же, чтобы получить записи отсортированные по релевантности, в количестве limit с подсветкой найденных слов.

Но, уже на 500000, скорость существенно уменьшается. Правда, на слабом железе. ES

FrancisDarroze:
UserID = %i
ivan-lev:
что такое DB::query и почему там %i ?

Рискну предположить, что то типа cпецификатора. Ну типа %d у sprintf(). Поэтому и int.

FrancisDarroze, посмотрите код public static function query() в классе DB и разберитесь с правилом формирования запроса.

Sitealert:
Ему там такого говна накидали, что он просто мог запретить ссылки

Да вроде, ссылки публикуются. Видимо и вопрос в том, что как?

У кого то в мессаге

<span class="question-description"><a href="http://xxxxx.xxxxx" title="http://xxxxx.xxxxx" rel="external">http://xxxxx.xxxxx</a>   Buy ***!</span>

А у другого

<p class="bookmark-description">&lt;h2&gt; How to Determine  

Но, в заголовке вполне валидная ссылка:

<p class="entry-content">
</p><h3>
<a href="https://xxxx.xxx" class="bookmark-title" rel="external">Persian Dates</a>
</h3>
danforth:
У меня вообще все проекты сделаны так: в урле всегда присутствует ID

Похожую тактику юзаю, c той лишь разницей, что ид - хеш от урла. Почему то не нравится ИД в урлах:(

Здесь, в отличии от рандомного (uuid -v 4) или основанного на времени (v1) все же приходится, для сборки обвеса документа использовать (урл админ может изменить и соотв. урл_ид) ид генерируемый базой или второй uid. Что накладывает, в случае автоинкрементного, ограничение на использование REPLACE/INSERT OR REPLACE, но я и так не юзаю эти команды.

Ну, или, при изменении урла/урл_ид менять все урл_ид в связанных хранилищах, что несколько муторно

 [uri] => Array

(
[uri_id] => 5c668ed8
[uri] => /ru/product/nike-boost-1911
[sids] => Array
(
[f1364608] => /ru
[581bb2eb] => /ru/product
[5c668ed8] => /ru/product/nike-boost-1911
)

[_sids] => Array
(
[/ru] => f1364608
[/ru/product] => 581bb2eb
[/ru/product/nike-boost-1911] => 5c668ed8
)

[sections] => Array
(
[0] => ru
[1] => product
[2] => nike-boost-1911
)

[first] => ru
[second] => product
[params] => Array
(
[0] => product
[1] => nike-boost-1911
)

[prm_pair] => Array
(
[ru] => product
[product] => nike-boost-1911
)

[@] => 1b3e4648-6099-4e60-8258-6f5ca13e95b9 #🍻
[full_uri] => /ru/product/nike-boost-1911@1b3e4648-6099-4e60-8258-6f5ca13e95b9
)

В моем случае достаточно простой хеш.


// в данном случае, где то раньше define('_HASHALGO', 'crc32b');
return hash(_HASHALGO, $str);

Над переходом к чему то типа

$ uuid -v 5 $NAMESPACE "/ru/product/nike-boost-1911"

df5bedc5-e212-5f62-9ee3-3dea998fcd63

уже не первый раз задумываюсь.

Зы: Идею с хранением дополнительного параметра в урле спикрал :)

danforth:
вам нужно будет сделать запрос `SELECT * FROM product WHERE id = ?`, а для локалезависимых - `SELECT * FROM product_l10n WHERE product_id = ?`

Во втором product_id не примари. Ну или еще и локаль видимо должна фигурировать.

2 товара в одном из 1с зашли en, es, ru. Во втором только ru

Array

(
[14818] => Array
(
[_id] => 14818
[analogi] => Array
[primenyaemost] => Array
[soputstvuyuschietovary] => Array
[relevitems] => Array
[artikul] =>
[gruppy] =>
[id] =>
[kartinka] => Array
[naimenovanie] =>
[naimenovanienaanglijskom] =>
[naimenovanienaispanskom] =>
[opisanie] =>
[price] => Array
[up] =>
[ups] => 1
[ves] =>
[znacheniyarekvizitov] => Array
[words] =>
[trigramms] =>
[seo] => Array
[ishit] =>
[isview] =>
[actionPrice] => Array
[vendor] => Array
[delivery] => Array
[storage] => Array
[slug] =>
[customslug] =>
)
[11927] => Array
(
[_id] => 19927
[analogi] => Array
[artikul] =>
[bazovayaedinica] => Array
[gruppy] =>
[id] =>
[kartinka] => Array
[naimenovanie] =>
[price] => Array
[up] =>
[ups] => 1
[ves] =>
[znacheniyarekvizitov] => Array
[words] =>
[trigramms] =>
[seo] => Array
[ishit] =>
[isview] =>
[actionPrice] => Array
[vendor] => Array
[delivery] => Array
[storage] => Array
[slug] =>
[customslug] =>
)

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

Всего: 541