Добрый день! Подскажите, пожалуйста! Недавно начал работать с битрикс, достался готовый магазин. При уходе с сайта выскакивает всплывающие окно. Шаблон аспро стоит. перелопатил всю админку, готовых решений не установлено по всплывающим окнам. Можете подсказать в каком направлении искать? Нужно убрать это окно.
Коллеги, если вы занимаетесь разработкой для Битрикс24 корп. портал вы оцените новое окружение под Docker
Несмотря на то, что сборка первоначально была нацелена на запуск битрикс24 проектов, она подойдет и для разработки на БУС. Основная идея была в том, чтобы добиться полной совместимости с bitrix-env, включая дополнительные сервисы типа Push & Pull, избавиться от кучи тяжелых виртуалок, и ускорить разработку через подключение других инструментов типа Codeception.
Для тех кто слабо знаком с Docker имеется подробная инструкция по быстрому старту, и примеры рабочих конфигураций - достаточно скопировать их локально и запустить одну команду.
Оставляйте в комментариях ваши пожелания и улучшения, или присоединяйтесь в GitHub.
Kesheshyan Akop, Спасибо. Еще один вопрос если я в volumes вместо ./:/home/bitrix/www/local пропишу ./:/home/bitrix/www я увижу всю файловую систему? для меня это важно, а то есть предположения что может что то пропасть(
Карповец Иван, да, все верно. Но меняйте volumes до установки битрикс, т.к. если при установка у вас прописан local, то битрикс установит дистрибутив внутрь контейнера.
Поменяв volumes на /:/home/bitrix/www убедитесь что у вас есть в корне проекта bitrixsetup.php Его можно скачать с сайта битрикс.
Данная реализация неверная. Основной задумкой докера - является один сервис - один контейнер. Для работы Битрикс и Битрикс24 через докер более правильным решением является создание docker-compose файла, в котором замаунтить все волюмы, пробросить порты и сделать нормальное связывание контейнеров между собой.
Melihat Bermacam Keuntungan Link Alternative Joker123 yang Membuat Tagih 10 ribu pada saat bergabung didalam slot81. Tidak dapat disangkal kembali jika trend permainan yudi yang berkembang dalam sekian tahun ini dikuasai oleh pemakaian yudi online.
Ya, yudi online disaksikan seperti yalan keluar yang pas untuk bereskan terbatasinya tempat yudi online yang ada. Lewat yudi online karena itu tiap pemain tak perlu kembali keluarkan tenaga dan waktu tambahan untuk melawat tempat permainan yudi.
Cukup hanya pakai koneksi internet dan bermacam perlengkapan electronic saya seperti computer PC, netbook, netbook, dan hp android karena itu kegiatan rutin yudi bisa digerakkan dengan online. Banyak agen yudi online yang siap layani beberapa pemain dengan sarana terbaik.
Tetapi, cuman Joker123 yang dapat berisi beberapa peyudi secara baik lewat kelengkapan sarananya. Bahkan yuga, seyumlah keuntungan link alternative Joker123 yang dapat membuat beberapa pemain yadi suka. Lalu, apa keuntungan yang dapat membuat beberapa peyudi yadi suka ?. Baca yawabnya lewat pembahasan menarik di bawah ini.
Salah satunya keuntungan link alternative Joker123 yang dapat membuat peyudi yadi suka ialah proses registrasi dan transaksi bisnis usaha bisnisnya yang mempermudah pemain. Bagaimana tidak ?, pemain tak perlu buang sesaat agar cicip service yudi online yang telah disedaiakan.
Pemain perlu memulainya dengan menuntaskan proses registrasi anggota dalam sebentar saya. Registrasi cuman memerlukan beberapa data individu yang simpel seperti alamat e-mail, nomor hp atau WA, nama bank, nama pemilik rekening bank, dan nomor rekening bank.
Pemain akan dipersilakan untuk tentukan sendiri username dan code yang ingin dipakai untuk bermain yudi online. Percaya diri semua data yang dipakai saat registrasi pada keadaan aktif dan benar untuk percepat prosesnya.
Pemain tak perlu khawatir karena data individu akan terlindung secara baik oleh proses perlindungan data automatis yang oke. Cuman dalam kurun waktu perhitungan menit saya karena itu proses registrasi akan usai dan pemain dapat memakai username dan code untuk login ke situs Joker123.
Tiap pemain akan diuntungkan dengan service transaksi bisnis keuangan yang paling mempermudah. Ya, tiap pemain tentu memerlukan minimal 2 transaksi bisnis keuangan yang lain saat bermain yudi online yakni deposit dan withdraw.
Link Alternative Joker123 yang Mempermudah
Transaksi bisnis deposit diperlukan untuk isi saldo sebagai modal untuk bermain yudi online. Sedang transaksi bisnis withdraw diperlukan oleh pemain untuk mencairkan saldonya ke rekening individu agar dicicip. Transaksi bisnis bisa beryalan dengan gampang karena kedatangan bermacam media perbankan yang telah bekerya sama sebagai mitra transaksi bisnis.
Tidak cuma mitra transaksi bisnis yang dari bank nasional atau bank swasta saya seperti BNI, BRI, Berdikari, BTN, BCA, Danamon, Permata, CIMB Niaga, dan lain-lain. Bahkan yuga, ada yuga mitra transaksi bisnis dari bermacam pangkalan dompet electronic yang ramai dipakai oleh barisan milenial seperti DANA, Gopay, OVO, SAKUKU, Payfast, dan lain-lain.
Ditambah, transaksi bisnis yadi makin gampang dengan kedatangan bermacam mitra provider mobile seperti Telkomsel dan XL untuk hadirkan service transaksi bisnis baru memakai pulsa. Keringanan transaksi bisnis tercermin dari implementasi limit minimal yang paling dapat diraih yakni 25 ribu rupiah saya.
Jam operasional masing-masing mitra perbankan yang sudah diperlengkapi dengan status online atau aktif yang pasti membuat transaksi bisnis yadi makin gampang. Disamping itu, pemain akan memperoleh agunan transaksi bisnis yang aman dan cepat untuk memaksimalkan yalannya yudi online.
Koleksi Permainan Judi Online dan Bonus yang Komplet
Keuntungan link alternative Joker123 yang dapat didapat selanyutnya koleksi peryudian onlinenya yang paling komplet. Ya, banyak tipe peryudian online yang dapat dimainkan hanya cukup memakai sebuah ID. Hampiir semua peryudian yang ada berawal dari tipe yang terkenal dilapisan beberapa peyudi online seperti slots kasino, slots, tangkap ikan, bingo, funky, dan e-games.
Tiap tipe peryudian diperlengkapi index yang berisi bermacam server yudi online internasional. Berpikir saya, dalam tipe permainan slots saya ada beberapa puluh server yang dapat dipakai untuk bermain seperti Winter Swats, Super Stars, Lucky Joker, Fire Strikes, dan ada banyak kembali. Begitupun pada tipe permainan tankap ikan yang mempunyai minimal 15 server yang lain seperti Fish Haiba, Fish Hunter, Fish Hunting, Fisherman Wharf, Insect Paradies, dan ada banyak kembali.
Koleksi server yudi online yang bermacam ini berada di tipe peryudian online yang lain. Tiap pemain akan disajikan dengan perform grafis peryudian online yang menganakemaskan mata.
Ditambah, peryudian online yang beryalan sportif sanggup memberi kesemapatan yang serupa untuk tiap pemain untuk meraih kemenangan dan keuntungan. Disamping itu, peryudian online sudah diperlengkapi bermacam proses keamanan seperti anti cheat dan anti hack membuat perlindungan pemain dari tindakan manipulasi.
Tiap pemain bukan hanya diuntungkan dengan koleksi peryudian online yang komplet saya. Tetapi akan diuntungkan dengan kedatangan bermacam bonus yang komplet yuga. Ada minimal 3 type bonus yang dapat digunakan oleh pemain untuk mengoptimalkan keuntungan yakni bonus new anggota 20%, bonus referal 10%, dan bonus cashback (uang kembali) 12%.
Cukup hanya menuntaskan persyaratan dan ketetapan yang beryalan untuk tiap bonusnya karena itu pemain bisa memperoleh hadiah menariknya. Disamping itu, pemain bisa yuga memperoleh info terkini sekitar yudi online dengan mengontak service konsumen servis 24 yam non-stop lewat media live chat dan whatsapp.
Интересно, меня одного раздражает, то что файл urlrewrite.php постоянно перезаписывается без моего участия?
Дело в том, что я записал туда записи в том порядке, в котором мне нужно, может по эстетическим соображениям, а может просто хочу чтобы правила выполнялись в определённом порядке, иногда это важно.
И вот проходит некоторое время, открываем файл, а весь порядок нарушен. Было бы логичным, либо сохранять порядок, как было, либо добавить поле SORT. А такая самодеятельность движка не очень приятна.
Свеже-варимое ядро D7 и активно развивающийся корпоративный портал регулярно приводят к ситуациям, когда возникают "тормоза" с открытием тех или иных страниц портала. Композитный сайт до портала доберется еще не скоро, а решать вопросы производительности надо прямо сейчас.
Первое что пришло в голову - xdebug и модуль bitrix.xdebug от Дениса Шаромова. Отличный вариант, но под реальной нагрузкой в "стесненных" условиях сервера попытка снять трейс проблемного кода приводит к OutOfMemory и иным неприятным сюрпризам. Особенно когда требуется отловить 1 из 30-50 запросов к странице.
Следующим шагом стал совет Александра Сербула - использовать XHProf, который ощутимо легче в ресурсах и позволяет использовать его в боевых условиях под нагрузкой.
Итогом стал небольшой скрипт, позволяющий облегчить применение XHProf в проектах на битрикс.
Настройка:
$xhprof_path = '/home/bitrix/www/xhprof/'; // Путь к GUI XHProf, слэш на конце обязателен $xhprof_url = 'http://vhost/xhprof/xhprof_html/index.php'; // Базовая ссылка на GUI XHPro $xhprof_namespace = 'cp'; // Расширение файлов профиля (используется для агрегации и сравнительного анализа)
Ньанс - не всегда получается найти GUI в дебрях /usr/, поэтому я просто отдельно скачал его здесь pecl.php.net/get/xhprof-0.9.2.tgz и разместил в папке проекта.
time_limit: максимальное время выполнения страницы, для которой выполняется профилирование если 0, профилируются все запросы.
sendUser: если указан пользователь, то ссылка отправляется сообщением социальной сети интранет (требуется модуль Веб-мессенджер) если 0, формируется popup-окно для текущего пользователя.
Информация по установке XHProf: - VMBitrix: модуль доступен сразу, достаточно переименовать /etc/php.d/xhprof.ini.disabled в xhprof.ini - CentOS: yum install php-xhprof - другие системы - гугль в помощь...
// Путь к GUI XHProf, слэш на конце обязателен
$xhprof_path = '/home/bitrix/www/xhprof/';
// Базовая ссылка на GUI XHProf
$xhprof_url = 'http://vhost/xhprof/xhprof_html/index.php';
// Расширение файлов профиля (используется для агрегации и сравнительного анализа
$xhprof_namespace = 'cp';
$xhprof_start_time = 0;
$xhprof_time_limit = 0;
$xhprof_user = 0;
if (extension_loaded('xhprof')) {
include_once $xhprof_path.'xhprof_lib/utils/xhprof_lib.php';
include_once $xhprof_path.'xhprof_lib/utils/xhprof_runs.php';
}
/*
* time_limit: максимальное время выполнения страницы, для которой выполняется профилирование
* sendUser: если указан пользователь, то ссылка отправляется сообщением социальной сети интранет
*/
function xhprof_start($time_limit = 0, $sendUser = 0) {
global $xhprof_start_time;
global $xhprof_time_limit;
global $xhprof_user;
$xhprof_user = $sendUser;
$xhprof_start_time = time();
$xhprof_time_limit = $time_limit;
if (extension_loaded('xhprof'))
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
}
function xhprof_stop() {
global $xhprof_namespace;
global $xhprof_url;
global $xhprof_start_time;
global $xhprof_time_limit;
global $xhprof_user;
global $APPLICATION;
$run_time = (time() - $xhprof_start_time);
if ($xhprof_time_limit == 0 || ($run_time >= $xhprof_time_limit)) {
if (extension_loaded('xhprof')) {
$xhprof_data = xhprof_disable();
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, $xhprof_namespace);
$profiler_url = sprintf($xhprof_url.'?run=%s&source=%s', $run_id, $xhprof_namespace);
if ($xhprof_user>0) {
$arMessageFields = array(
"TO_USER_ID" => $xhprof_user,
"FROM_USER_ID" => 0,
"NOTIFY_TYPE" => IM_NOTIFY_SYSTEM,
"NOTIFY_MODULE" => "im",
"NOTIFY_MESSAGE" =>
"XHProf: (".$run_time.">=".$xhprof_time_limit."): <a target=_blank href=\"".$profiler_url."\">".$run_id.".".$xhprof_namespace."</a>\n".
"URL: <a target=\"_blank\" href=\"".$APPLICATION->GetCurUri()."\">".$APPLICATION->GetCurUri()."</a>"
);
CIMNotify::Add($arMessageFields);
}
else {
?><div style="
margin: 5px;
width: 300px;
font-size: 11px;
padding: 5px;
line-height: normal;
font-weight: normal;
position: fixed;
top: 10px;
left: 10px;
z-index: 999;
opacity: 1;
border: 1px solid blue;
font-family: Verdana,Arial;
font-size: 10px;
color: black;
background-color: white;
margin: 0px;
padding: 2px;
font-weight: normal;
line-height: normal;
text-align: left;
background-image: none;">
<b>XHProf</b> (<?=$run_time?>>=<?=$xhprof_time_limit?>): <a target=_blank href="<?=$profiler_url?>"><?=$run_id?>.<?=$xhprof_namespace?></a>
</div><?
}
}
}
}
?>
Примеры уведомлений и пример отчета XHProf в картинках:
Очередное обновление не прошло гладко. При установке обновления очередного модуля выскочила ошибка 504. Это уже не первый раз происходит.
Причина такой ошибки - создание индексов, на довольно большом объеме данных. Из-за чего база может затянуть время выполнения скрипта больше чем таймаут nginx. В этот раз виновником был модуль voximplant, при обновлении он зарядил создание индекса CREATE FULLTEXT INDEX IXF_VI_STATS_1 ON b_voximplant_statistic_index(CONTENT)
Приходится через SHOW PROCESSLIST смотреть когда база справится с этим, и продолжать установку обновлений, в надежде что скрипт последней установки закончил выполнение корректно.
Почему нельзя вынести создание индексов на агенты, уже после установки обновления, не понятно.
Идеально было бы вынести установку обновлений в отдельный фоновый процесс на сервере, а не устанавливать их дергая сервер ajax запросами.
Надо петицию писать разработчикам битрикс, что бы сделали отложенное выполнение запросов при обновлении. Вчера вышло обновление, сегодня устанавливаю, снова долгие операции в БД, на этот раз изменение таблицы:facepalm: Одна из таких операций:
ALT ER TABLE b_crm_dp_entity_hash ADD DATE_MODIFY DATETIME DEFAULT CURRENT_TIMESTAMP NULL
У меня в этой таблице 3 220 865 записей, при всем уважении Сергей Рыжиков, вы когда эти операции вписываете в обновление, не предполагаете что может быть такая ситуация?
Вынесите эти операции в фон, или хотя бы перед выполнением проверяйте количество строк в таблице и выдавайте предупреждение человеку устанавливающему обновления, что эти операции лучше сделать вручную через консоль.
Поясню в двух слова. Допустим, у нас есть интернет-магазина на трех языках, у которого товары на всех языковых версиях идентичны.
Битрикс рекомендует создавать для этих целей три ифноблока, и в каждом инфоблоке дублировать все свойства, настройки формы редактирования товара, сортирвоку товара, цены, скидки, привязку к категории, значения свойств с типом "список" и тд.
В итоге работа по сопровождению такой группы инфоблоков занимает огромное количество времени у того, кто наполняет сайт. Вот только представьте, бедному редактору нужно помнить, какие языковые версии он добавил для этого товара, а какие еще нет, менять цены во всех трех инфоблоках, а если вдруг нужно будет добавить свойство с типом "список" - то вообще труба, нужно заходить и проделывать огромное число работы по их синхронизации.
Так вот, идея в том, чтобы иметь механизм синхронизации инфоблоков. Создаем один инфоблок, нажимаем кнопку "создать языковую версию", и создается полная копия-дубль данного инфоблока (для перевода на другой язык). Копируется всё, настройки путей, свойства, параметры полей, настройки доступа, сео-свойства и тд и тп. И далее - синхронизация поддерживается на уровне АПИ, при изменении (добавлении или удалении) свойств одного инфоблока - автоматически аналогичные свойства создаются/удаляются в другом инфоблоке. При изменении формы редактирования товара, или формы редактирования списка товаров - то же самое, данные настройки автоматически меняются и в связанных языковых инфоблоках.
Потом, на странице редактирования товара делаем кнопочки "Добавить языковую версию", при её нажатии открыватся в попап-окне форма добавления элемента из связанного инфоблока, и редактор добавляет прямо с одной страницы дополнительную языковую версию. При этом у элемента-перевода автоматически проставляются свойства, которые для всех инфоблоков одинаковые (например, цены, числовые свойства или свойства-привязки). При изменении свойств основного элемента (например, поменялась цена или сортирвока) эти свойства автоматически изменяются и в связанном элементе.
Таким образом, всё управление по элементу будет проходить на одной странице, и редактирование самого товара, и его языковых переводов. При этом сохраняются все преимущества хранения товаров в раздельных инфоблоках: - настройки путей для поиска; - возможность задавать или не задавать перевод для разных товаров, или иметь разные товары в разделы разделах; - возможность настраивать права доступа на редактирование разных языковых версий; - возможность делать свои шаблоны сео-путей для разных переводов; - возможность делать автоматические рассылки для разных языков с помощью модуля рассылок; - отсутствие необходимости иметь большое число свойств в одном инфоблоке (например, если у инфоблока в сумме 50 свойств, то чтобы добавить перевод для 3-х языков нужно будет добавлять 150 свойств).
В то же время, благодаря репликации инфоблоков будем иметь: - удобство редактирования переводов товара с одной страницы карточки товара; - возможность менять цены и числовые свойства, сортировки и привязки в одном месте один раз;
Какие у кого мысли по этому поводу? Есть ли будущее у данной модели и насколько она жизнеспособна?
Маджугин Александр, зачем N хайлоадблоков? Не лучше колонку добавить - язык, и по ней отбирать. А еще не очень то хорошо на язык ориентироваться. Лучше на сайт ид. Так как у Росси и Белоруссии может быть один язык - русский. А метатеги то разные. Купить в Минске.... Купить в Москве...
Фантич Виталий, для сменяемости. Т.е. предположим у вас колонки для каждого языка (пока языка, а не сайта), тогда у них разные коды и оперируя с ними вам нужно постоянно знать язык. Т.е. для того чтобы оперирывать с именем вы должны знать какое поле вы используете UF_NAME__RU или UF_NAME__UA. Когда у вас два Иб, то вам необходимо знать язык только на этапе запроса - к какому Иб вы обращаетесь, а далее вы всегда знаете что текущее актуальное называние у вас в поле UF_NAME. Кроме того теоретически это быстрее при запросах.
Почему именно язык, а не сайт - да потому что язык это и есть язык и необходимо получать именно переводы. Метатеги должны зависеть вовсе не от языка, а от локации. Или вы сделаете сайт отдельно для Москвы, отдельно для Ростова-на-Дону и отдельно для Тюмени? Пойдя по такому пути, вы в итоге придете к тому, что у вас будет сайт белорусский, белорусский на русском языке, украинский, украинский на русском языке и так далее. Вместо трех переводов вы будет вынуждены поддерживать 5 и это при 3 языках. Когда языков стане 15 вы проклянете привязку к сайтам, особенно когда выяснится что вашими услугами пользуются русскоговорящие люди в Германии и вам нужно поддерживать даже, немецкий сайт на русском языке.
Не, не так имел ввиду структуру таблицы делать. Отдельная колонка значение перевода и отдельная колонка LANGUAGE_ID 'UA' , 'RU', и отдельная колонка индентификатора поля перевода. Вот и все
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».