Сколько стоит написать с ноля скрипт обмена 1с и интернет магазин на вордпресс? Начали работать с одной фирмой они нам скрипт уже сто раз переписывают и все за наши деньги говорят что проблемы с нашей стороны, заглянул покопался, а там такая фраза PHP: if ( ($import_started == 1) && ( ($import_last_started+(7*60*60)) >= time() ) ) { // Время выполнения скрипта 7 часов die('Импорт уже запущен.'); по логике мне кажется что скрипт не даст себя еще раз запустить раньше чем через 7мь часов после запуска, верно? мы не жадные но уже под 50тр в этот скрипт вложили скрипт парсит загруженные товары вот как выглядит в коде PHP: if(isset($_REQUEST['mode'])&&$_REQUEST['mode']=='init') { echo "zip=no\nsfile_limit=999999999999"; exit; } require('../../wp-load.php'); global $wpdb; // hide Warnings and Notices WordPress ini_set('display_errors','Off'); ini_set('error_reporting', E_ALL ); define('WP_DEBUG', false); define('WP_DEBUG_DISPLAY', false); $import_started = (int) get_option( 'import_started', '' ); $import_last_started = (int) get_option( 'import_last_started', '' ); if ( ($import_started == 1) && ( ($import_last_started+(7*60*60)) >= time() ) ) { // Время выполнения скрипта 7 часов die('Импорт уже запущен.'); } update_option( 'import_stop', '0' ); update_option( 'import_started', '1' ); update_option( 'import_last_started', time() ); if(isset($_REQUEST['mode'])&&$_REQUEST['mode']=='file'&&isset($_REQUEST['filename'])) { if($_REQUEST['filename'] == 'import.xml') { // Только для полного обновления if($_REQUEST['full'] == '1') { $wpdb->query("UPDATE ve3q1_posts SET post_status = 'draft' WHERE post_type = 'product'"); } for($ii=0;$ii<=2;$ii++) { if($ii == 0) { $file = 'import.xml'; } else { $file = str_replace('.xml', $ii.'.xml', 'import.xml'); } import_xml_start($file); } update_option( 'import_started', '0' ); update_option( 'import_stop', '0' ); update_option( 'import_last_started', '0' ); echo "success"; exit;
7 часов импорт идет? И все это через веб-сервер работает? Купите томик Камасутры и бейте по башке этим индусам, пока скрипт не завершит работу ))
вообще по уму это должно работать так.. 1. В 1С добавляете товар, создаете карточку, добавляете изображения, описания и т.п. 2. Нажимаете в 1С импорт и со стороны 1с начинают отправляться обновленные или новые товары в магазин, а магазин в свою очередь ждет постоянно что ему что то пришлют.. тут нужен программер 1С и программер пхп.. потому что обычно это разные люди..
Ты бизнес-требования изначальные не знаешь, зачем сразу по башке индусов бить? Не даст запустить если импорт запущен в данный момент (вероятно, но не факт из приведенноготобрывка) и если с момента запуска не прошло 7 часов Стоимость интеграции нормальная озвучена. Детали не видны потому как не все исходники показаны за импорт отвечающие
Так все и работает, у нас 1с когда кладет файлы в папку с каталогом и ценами, запускается скрипт php тот что выше написал, и он начинает разбирать каталог, но не разбирает, постоянно что-то не срабатывает(
вообще судя по коду тут написано что импорт не чаще чем раз в 7 часов... а сколько длиться - не известно)) не думаю что долго.. вижу там приходит xml файл..
по мусору в папке видно что они его 7 раз меняли, по сравнению видно что были и ключевые и полное изменение --- Добавлено --- я так и думал, и написал об этом Руководителю проекта " скажите зачем он написал такую строчку в код ? я конечно не программист но у меня подозрение выделил в тексте, судя по тому что там написано он тупо блокирует попытки запустить синхронизацию повторную на 7 часов я сколько лет тестировать буду? " ответ " Данная часть защищает от повторного запуска скрипта раньше 7-ми часов в случае если скрипт работает, т.к. Это может повлиять на работу сервера. Если скрипт отработает за меньше время, то это сравнение пропускается. "
Нет у меня веры в людей ) Мой здоровый пессимизм подсказывает мне, что всё это так и работает через веб-сервер, со снятыми тайм-лимитами и безграничной оперативкой, ещё при этом занимая воркер, который не факт, что потом поделится с остальными сожранными ресурсами )) --- Добавлено --- Скорее всего так оно и есть. Что бы не запустилось несколько процессов одновременно, они проверяют время последнего запуска и выставляют максимальный период в 7 часов, на случай если всё рухнет и не успеет отметиться в базе об успешном завершении.
ну какая то честно говоря фиговая проверка.. а почему просто флаг нельзя поставить в той же сессии что импорт идет.. а потом убрать его.. а то 7 часов..
Слишком много текста если выложить весь скрипт, просто раньше он работал потом вдруг перестал, сейчас три файла из трех разных каталогов грузит нормально, т.е. отрабатывает, а когда три полных каталога 17тыс товаров, то первый пропускает в котором 90% номенклатуры а остальные два разбирает, сказали проверять 1с в ней все зло, т.к. она наверно в каком-то месте динамически формирует криво(что само по себе не возможно, т.к. динамически), и раньше все работало.. Дак вопрос открыт стоит ли таких денег обмен с сайтом?
Тут вопрос оценки серьезности даваемой рекомендации. Не видно бизнесс-логики скрытой в require блоке, не понятно в каком обьеме и каком виде приходят данные, не понятно что с ними происходит не ясна и близко конфигурация которая там отрабатывает, кто тебе сказал что веб сервер там както задействован кроме ретрансляции запроса к php-fpm? А вы уже уничтожили решение признав его несостоятельным. Это не серьезный подход даже если реализация действительно плохая.
Просто я хотел узнать верно ли я понял действительно ли в текущем коде сделано тупо тайм лимит если я запустил полную выгрузку, то у них прописано не давать запускать еще 7 часов? или не хватает кода чтобы это выяснить могу докинуть более полный кусок
ох, ладно. Погорячился, был не прав. Вполне возможно, что веб-сервер и php-fpm лишь создают таск, который подхватывается каким-нибудь сервером очередей, выполняется в фоне, ничего не блокирует и лишнего не отжирает.
может требования были чтоб не чаще раза в 7 часов .... а так - похоже у вас выгрузка формат поменяла - вот и сюрприз. Ну 1С обновили например, или еще чего
ну то что запускается раз в 7 часов мы уже поняли) а почему часть каталогов пропускает не понятно... и да, он должен довольно таки долго работать, лимиты временные сняты и используются методы WP для добавления товаров (постов), обновления тегов и т.п. то есть базу должен молотить сильно..
что бы понять почему не все грузит - надо смотреть логи и пытаться на сервере запускать все это добро и смотреть что там происходит.
@Zuldek ты конечно прав, но я таки тоже не ошибся )) --- Добавлено --- Смотри логи php, php-fpm, nginx на предмет out of memory, time limit и прочих bad gatway и gateway timeout.
да я только скрипт увидел.. ничего необычного.. все стандартно.. каких то специальных глюков не увидел))