Задать вопрос
  • Как вывести количество товаров на странице в Битрикс?

    А в чем сложность?
    echo count($arResult['ITEMS']) почему-то не подходит?
    Ответ написан
  • Как актуализировать элементы инфоблока (REST)?

    0 А чо не md5?
    1 Как-то странно - вы проверяете контрольную сумму и обновляете элемент если она совпадает? А зачем? Если у вас контролька от данных и они не изменились - зачем обновлять? Пропустите этот элемент.
    2 Зачем вообще сначала сверять контрольные суммы? Какой в этом смысл если у большинства он будет разный?
    3 Вы понимаете что ваш алгоритм (если вы его правильно описали - я код не смотрел) будет обновлять элементы которы не нуждаются в обновлении (с совпадающем хэшем) и будет создавать дубли объектов, если их надо обновить, так как вы добавляете элементы с отличными хэшами в массив ADD?

    Как делал бы я - получил объекты.
    Собрал их внешние id и извлек из базы справочник по этим id по полю XML_ID, такой где XML_ID => TMP_ID.
    Далее переберал бы входные объекты, вычисляя для них хэш и если объект с XML_ID == id есть в справочнике, то сверял бы хэш. Если он совпадает - пропускаем объект. Если нет - добавляем его в uppdate. Если объекта нет в справочнике - добавляем его в add.
    Ответ написан
    4 комментария
  • Битрикс и практики работы?

    Все правильно понимаешь. Продолжай.

    UPD:
    Если делаешь сайт на компонентах и примерно понимаешь как все это работает, проще и лучше делать именно на написанных с нуля.
    Стандартные компоненты пытаются быть с одной стороны гибко настраевыемыми, с другой стороны стараются изолировать API от пользователя. Так как это плохо совместимые задачи, настройки компонтентов пухнут, а логика в работы не оправданно усложняется пытаясь покрыть максимум потребностей.
    Но на проекте тебе как правило нужны компоненты достаточно узкой специализации, если ты не хочешь их использовать за его пределами.
    Поэтому написание с нуля на практике - лучшее решение.
    Ответ написан
    2 комментария
  • Правильно ли я пониманию, что архитектура "битрикс управление сайтом" несколько кривая?

    Я бы сказал - своеобразная.
    Там насколько мне помнится, написано что компонент - контроллер, а его шаблон это вьювер.
    Да, формально, если разобраться, так и есть.
    На практике у этого подхода есть как недостатки, так и преимущества.
    Ну к примеру мы говорим что якобы все три части у нас независимы, но на самом деле View всегда связаны с Controller, а Controller почти всегда связан с Model. В Битриксе не стали делать вид что это не так - компоненты это части модулей, а шаблоны не отделимые, хотя и сменяемые части компонентов. В большинстве случаев это соответствует практическим кейсам.

    Но никто не заставляет вас следовать этим рекомендациям. За свою жизнь разработчиком я видел многое и чаще всего это были какие-то попытки реализовать отдельные модели поверх Bitrix API, я и сам не однократно так делал и даже предпринял попытку обобщить этот опыт, пока не завершенную.
    Но я видел так же например и ZendFramewormk поверх Bitrix и вполне классическим MVC.
    Поэтому архитекутра Битрикс не приговор.

    А ноги такой архитектуры растут из попытки сделать CMS с которой, хотя бы в теории, мог справится человек совсем без подготовки. Надо же что-то показывать на презентациях. Но это не значит что вы обязаны делать и свои продукты для презентаций.
    Рекомендации же делать именно так нужны для того, что бы вы делали проект, максимально привычный для любого битрикс-разраба. Когда я впервые столкнулся со связкой Bitrix-Zend я честно говоря опешил, и если бы не опыт с дргуими фреймворками и CMS долго бы тупил...
    Ответ написан
    Комментировать
  • Fatal error exceptionhandler.php on line 343. Не хватает памяти?

    Однозначно не хватает памяти.
    Там у вас выбираются какие-то данные по пользователю - скорее всего таблица скидок по товарам, или матрица товаров (то что он ранее покупал) и вот она конкретно у этого пользователя/на этом договоре слишком большая.
    Ответ написан
    3 комментария
  • На сколько эффективен wireguard для обходы блокировок?

    Для обхода блокировок подходит смена провайдера на того которые не блокирует.
    Не блокируют зарубежные провайдеры.
    Зарубежные провайдеры обслуживают зарубежные датацентры.
    Следовательно в сеть надо выходить из зарубежного датацентра.
    Всё.

    А тот способ которым вы доберетесь до этого датацентра уже не важен. Будет ли это OpenVPN, WireGuard или просто SOKS5 по SSH туннелю - это уже пофиг.
    SOKS5 по SSH не надо даже настраивать, но придется настроить все программы работающие с сетью, которые в него надо завернуть
    OpenVPN в этом отношении предпочтительнее - один раз настроил и пользуйся. Плюсом ты имеешь частную сеть - я например через нее помогаю с компом маме которая в 200 км от меня и у нее нет белого IP, зато мы с ней в одной VPN. Кроме того мне не надо парится по поводу смены IP - даже когда я в поездках я имею доступ к рабочим серверам, где фильтрация по IP. Однако OpenVPN медленный и глючный. Жрет "много" ресурсов - самая дешевая VPSка все равно тянет несколько клиентов, но не более того.
    wireguard - часть ядра. Он быстрый, надежный, безопасный. Самый быстрый из представленных. Однако еще сыроватый и мануалов по нему не много. С другой стороны если вам не нужна виртуальная частная сеть выбирать пожалуй надо именно его.
    Ответ написан
  • Как лучше загружать трекеры и рекламные скрипты в эпоху AdBlock?

    Отвечу только по метрике - я никогда вообще не делаю обращений к метрике или ga - у меня все методы собственные и уже внутри этих методов забиваются цели яндекса, ga и чего там еще придумают эти наши рекламщики.
    Когда надо сменить счетчик, или исправить логику, или поймать ошибку не загрузившегося счетчика, то все это достаточно изменить в одном месте - моем скрипт который обслуживает цели.
    Ответ написан
    1 комментарий
  • Как вывести foreach arResult в случайном порядке Битрикс?

    Другой вариант - сразу случайно выбрать 5 элементов из БД и выводить в цикле подряд. Для обычного компонента в битрикс что-то вроде:
    'SORT_BY1' => 'RAND',
    'SORT_ORDER1' => 'RAND',
    'NEWS_COUNT' => 5,
    Ответ написан
    2 комментария
  • Сортировка товаров по geo-координатам возможна в Bitrix?

    В Bitrix такое возможно?

    Что значит "возможно в Btirix"? Bitrix написан на php, а php тьюринг-полный, поэтому возможно даже операционку на нем написать.

    Штатно ничего подобного нет. Модулей тоже не знаю.

    Наверное есть несколько путей реализации, в зависимости от ваших требований.

    Ну например если у вас всего скажем 5 городов в которых вы работаете, то можно завести у товаров 5 свойств и заранее проставить в этих свойствах удаленность от каждого города. В дальнейшем сортировать по такому свойству в зависимости от города.

    Если допустим у вас городов не ограничено но нужна не сортировка, а то что вы описали - сначала вывести товары в данном городе, а затем все остальные, и к каждому товару привязан город, то я бы предложил выводить в два приема товары - сначала все товары из текущего города, и отдельным компонентом все остальные.

    Т.е. важно сначала:
    1 Понять что вы называете сортировкой и что вам нужно.
    2 Разобраться какие могут быть геопозиции у пользователя - города ли это или координаты и ограничено ли их число.
    3 Разобраться как вы можете хранитрь позиции товаров - опять же города это или координаты или что-то иное.

    Потом думать.
    Ответ написан
    1 комментарий
  • Размер стека и pcre.recursion_limit в битриксе влияет на отображение?

    В теории можно придумать как данная проблема может привести к проблемам с версткой. На всякий случай снимите все галочки в блоке Оптимизация CSS в настройках главного модуля.

    Но вероятнее всего у вас какие-то проблемы с переносом и подключением css/Js файлов - смотрите в консоле что именно там у вас отвалилось и какие файлы стилей/скриптов не загружаются.
    Ответ написан
  • Как обойти большой json файл и обновить все связанные записи в MySQL, с отставанием от файла < 2 сек.?

    Правильное решение - парсер должен сам сразу писать в БД.

    Если это невозможно надо постараться максимально устранить накладки и двойные обработки:
    На каждую итерацию work.php отправляет ID в скрипт getEvent.php с помощью fsockopen.
    ... В getEvent.php опять же идет гет актуального JSON, декод и скрипт ищет в "events" ID, которое ему отправил work.php затем обрабатывает эти данные и обновляет их в базе MYSQL

    Вот это что за хрень? Почему work.php не может сразу отправить данные getEvent? Зачем getEvent заново гетит JSON и заново ищет там ID?
    А потом вы жалуетесь что:
    Оперативка кушается потому что в work.php каждые 2 секунды гетится json + в 600-800 открытых getEvent.php тоже гетится этот же json.


    чтобы они не отставали от данных в json файле более чем на 2 секунды.

    И сколько гигабайт в вашем JSON что процесс не может его обойти и отправить мускул за 2 секунды?
    Ответ написан
    4 комментария
  • Медленная отработка php-fpm?

    Это и есть кэш отресайзеных картинок и долго генерится именно он. Возможно медленная дисковая подсистема. Возможно картинки огромные + наложение ватермарка.

    Удалил у товара картинки вообще (в анонсе тоже). Чищу снова кэш. Заново открываю страницу. 30 секунд.

    Посмотрите на странице есть картинки показываемые из upload/resize_cache

    А вообще открывайте шаблон и result_modifier.php этого компонента и смотрите что там за код.
    Ответ написан
  • Почему домашняя проводная сеть обеспечивает только 100 Мбит/сек, и как повысить скорость до гигабитной?

    1 Плохо обжаты разъемы
    2 Смотри на какой скорости реально поднялось соединение - измерение копированием, не самый лучший варик. Должно отображаться в панели роутера или man ethtool
    Ответ написан
    1 комментарий
  • Почему не инвалидируется тегированный кэш?

    Suntechnic
    @Suntechnic Автор вопроса
    Сам спросил - сам отвечай:
    Тегированный кэш не работает если константа BX_COMP_MANAGED_CACHE не установлена. Причем не работает именно тегирование, в том числе и очистка.

    Т.е. никакой вызов StartTagCache не запускает тегированный кэш если не установлена константа BX_COMP_MANAGED_CACHE.

    в dbconn.php или куда вам удобно:
    define('BX_COMP_MANAGED_CACHE', true);
    Ответ написан
    Комментировать
  • Как сократить количество запросов для получения свойства "Справочник"?

    Если прям тупо в лоб:
    $arRef = [];
    $resultArray = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity('Entity')->getDataClass()::getList([
            'select' => ['UF_NAME'],
            'filter' => [],
        ]);
    while ($rowArray = $resultObj->fetch()) {
        $arRef[$resultArray['UF_XML_ID']] = $resultArray['UF_NAME'];
    }
    foreach ($arResult['ITEMS'] as $index => $arItem) {
        $arResult['ITEMS'][$index]['PROPERTIES']['PROP']['UF_NAME'] = $arRef[$arItem['PROPERTIES']['PROP']['VALUE']];
    }
    Ответ написан
    1 комментарий
  • Как все таки подключить скрипт в header 1C?

    Ничего битрикс самопроизвольно не добавлял. Это вы взяли и зачем-то создали скрипт как страницу сайта.

    Используете редактор кода или редактируйте файл из админки в режиме PHP - пункт "Редактировать как PHP"
    Ответ написан
  • Почему подключается не тот компонент?

    А есть уверенность в том, что он игнорируется? Как вы это определили? Попробуйте добавить брейкпоинт прямо в тело компонента.

    В целом в такой ситуации путь обычно такой - брейкпоинт в интексный файл и убеждаемся что файл этот подключается.
    Потом брейкпоинт в шаблон компонента, если тишина - значит в сам компонент (возможно он не подключает шаблон).
    Лучше для редактирования файлов использовать редактор, а не встроенный редактор в админку. Если вы правите прямо на сервере (что не гут), можете взять Komodo Edit - он умеет работать по сети - нужно толкьо настроить сервер и указать что проект находится на удаленном сервере.
    Ответ написан
    Комментировать
  • Можно ли в Linux запустить процесс при OOM?

    2 Запускать sshd с nice -19 ?
    Вроде по умолчанию там 20.

    Может быть (как извращенный трюк) сразу запускать bash (при запуске сервера) а при логине только коннектить как-то юзера и bash?

    man screen
    Ответ написан
  • Почему сайдбар не вошьют в html5?

    Если речь о теге, то нет, так как html вообще не несет по сути ни поведения, ни оформления и не должен нести - это язык РАЗМЕТКИ. По большому счету теги это средства структуирования и семантической разметки текста, а не навязывания ему поведения и вида. Да есть table, но это наследие тяжелого прошлого.
    Так что добавление тега который будет брать на себя целый комплекс поведения и отображения и фиксироваться на нем, ждать не стоит - это противоречит смыслу и задаче html, и в то же время легко решается версткой.

    С другой стороны, если бы у браузеров появилось дополнительное окно-сайдпанель и в нем бы можно было бы отобразить html из специального тега panel, вложенного в html, т.е. фактически бы мы получали возможность отображать одну страницу как две страницы в двух разных вьюпортах, но как единый документ это было бы весьма интересно. Но тут нужна поддержка со стороны браузеров - в языке менять ничего не нужно - на первых порах подошло бы специальное css свойство.
    Ответ написан
    Комментировать