За последние 24 часа нас посетили 22989 программистов и 1717 роботов. Сейчас ищут 1969 программистов ...

Золотой скрипт просто help профи

Тема в разделе "PHP Free-Lance", создана пользователем Bautech, 24 окт 2017.

  1. Bautech

    Bautech Новичок

    С нами с:
    24 окт 2017
    Сообщения:
    10
    Симпатии:
    0
    Сколько стоит написать с ноля скрипт обмена 1с и интернет магазин на вордпресс?
    Начали работать с одной фирмой они нам скрипт уже сто раз переписывают и все за наши деньги говорят что проблемы с нашей стороны, заглянул покопался, а там такая фраза

    PHP:
    1.     if ( ($import_started == 1) && ( ($import_last_started+(7*60*60)) >= time() )  ) { // Время выполнения скрипта 7 часов
    2.         die('Импорт уже запущен.');
    по логике мне кажется что скрипт не даст себя еще раз запустить раньше чем через 7мь часов после запуска, верно?

    мы не жадные но уже под 50тр в этот скрипт вложили
    скрипт парсит загруженные товары

    вот как выглядит в коде
    PHP:
    1. if(isset($_REQUEST['mode'])&&$_REQUEST['mode']=='init') {
    2.         echo "zip=no\nsfile_limit=999999999999";
    3.         exit;
    4.     }
    5.     require('../../wp-load.php');
    6.     global $wpdb;
    7.     // hide Warnings and Notices WordPress
    8.     ini_set('display_errors','Off');
    9.     ini_set('error_reporting', E_ALL );
    10.     define('WP_DEBUG', false);
    11.     define('WP_DEBUG_DISPLAY', false);
    12.     $import_started = (int) get_option( 'import_started', '' );
    13.     $import_last_started = (int) get_option( 'import_last_started', '' );
    14.     if ( ($import_started == 1) && ( ($import_last_started+(7*60*60)) >= time() )  ) { // Время выполнения скрипта 7 часов
    15.         die('Импорт уже запущен.');
    16.     }
    17.     update_option( 'import_stop', '0' );
    18.     update_option( 'import_started', '1' );
    19.     update_option( 'import_last_started', time() );
    20.     if(isset($_REQUEST['mode'])&&$_REQUEST['mode']=='file'&&isset($_REQUEST['filename'])) {
    21.    
    22.         if($_REQUEST['filename'] == 'import.xml') {
    23.        
    24.             // Только для полного обновления
    25.             if($_REQUEST['full'] == '1') {
    26.                 $wpdb->query("UPDATE ve3q1_posts SET post_status = 'draft' WHERE post_type = 'product'");
    27.             }
    28.        
    29.             for($ii=0;$ii<=2;$ii++) {
    30.            
    31.                 if($ii == 0) {
    32.                     $file = 'import.xml';
    33.                 } else {
    34.                     $file = str_replace('.xml', $ii.'.xml', 'import.xml');
    35.                 }
    36.            
    37.                 import_xml_start($file);
    38.             }
    39.        
    40.             update_option( 'import_started', '0' );
    41.             update_option( 'import_stop', '0' );
    42.             update_option( 'import_last_started', '0' );
    43.        
    44.             echo "success";
    45.             exit;
     
    #1 Bautech, 24 окт 2017
    Последнее редактирование модератором: 24 окт 2017
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    7 часов импорт идет? И все это через веб-сервер работает? Купите томик Камасутры и бейте по башке этим индусам, пока скрипт не завершит работу ))
     
    Bautech нравится это.
  3. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    вообще по уму это должно работать так..
    1. В 1С добавляете товар, создаете карточку, добавляете изображения, описания и т.п.
    2. Нажимаете в 1С импорт и со стороны 1с начинают отправляться обновленные или новые товары в магазин, а магазин в свою очередь ждет постоянно что ему что то пришлют..

    тут нужен программер 1С и программер пхп.. потому что обычно это разные люди..
     
  4. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Ты бизнес-требования изначальные не знаешь, зачем сразу по башке индусов бить?

    Не даст запустить если импорт запущен в данный момент (вероятно, но не факт из приведенноготобрывка) и если с момента запуска не прошло 7 часов

    Стоимость интеграции нормальная озвучена. Детали не видны потому как не все исходники показаны за импорт отвечающие
     
    Bautech нравится это.
  5. Bautech

    Bautech Новичок

    С нами с:
    24 окт 2017
    Сообщения:
    10
    Симпатии:
    0
    Так все и работает, у нас 1с когда кладет файлы в папку с каталогом и ценами, запускается скрипт php тот что выше написал, и он начинает разбирать каталог, но не разбирает, постоянно что-то не срабатывает(
     
  6. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    вообще судя по коду тут написано что импорт не чаще чем раз в 7 часов... а сколько длиться - не известно)) не думаю что долго.. вижу там приходит xml файл..
     
    Bautech нравится это.
  7. Bautech

    Bautech Новичок

    С нами с:
    24 окт 2017
    Сообщения:
    10
    Симпатии:
    0
    по мусору в папке видно что они его 7 раз меняли, по сравнению видно что были и ключевые и полное изменение
    --- Добавлено ---
    я так и думал, и написал об этом Руководителю проекта "
    скажите зачем он написал такую строчку в код ? я конечно не программист но у меня подозрение
    выделил в тексте, судя по тому что там написано он тупо блокирует попытки запустить синхронизацию повторную на 7 часов я сколько лет тестировать буду? " ответ "
    Данная часть защищает от повторного запуска скрипта раньше 7-ми часов в случае если скрипт работает, т.к. Это может повлиять на работу сервера.
    Если скрипт отработает за меньше время, то это сравнение пропускается. "
     
  8. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Нет у меня веры в людей ) Мой здоровый пессимизм подсказывает мне, что всё это так и работает через веб-сервер, со снятыми тайм-лимитами и безграничной оперативкой, ещё при этом занимая воркер, который не факт, что потом поделится с остальными сожранными ресурсами ))
    --- Добавлено ---
    Скорее всего так оно и есть. Что бы не запустилось несколько процессов одновременно, они проверяют время последнего запуска и выставляют максимальный период в 7 часов, на случай если всё рухнет и не успеет отметиться в базе об успешном завершении.
     
    Bautech нравится это.
  9. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    ну какая то честно говоря фиговая проверка.. а почему просто флаг нельзя поставить в той же сессии что импорт идет.. а потом убрать его.. а то 7 часов..
     
  10. Bautech

    Bautech Новичок

    С нами с:
    24 окт 2017
    Сообщения:
    10
    Симпатии:
    0
    Слишком много текста если выложить весь скрипт, просто раньше он работал потом вдруг перестал, сейчас три файла из трех разных каталогов грузит нормально, т.е. отрабатывает, а когда три полных каталога 17тыс товаров, то первый пропускает в котором 90% номенклатуры а остальные два разбирает, сказали проверять 1с в ней все зло, т.к. она наверно в каком-то месте динамически формирует криво(что само по себе не возможно, т.к. динамически), и раньше все работало.. Дак вопрос открыт стоит ли таких денег обмен с сайтом?
     
  11. Bautech

    Bautech Новичок

    С нами с:
    24 окт 2017
    Сообщения:
    10
    Симпатии:
    0
    или может заказать аудит их кода у конкурентов, т.к. чувствую я дурят меня
     
  12. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Тут вопрос оценки серьезности даваемой рекомендации.

    Не видно бизнесс-логики скрытой в require блоке, не понятно в каком обьеме и каком виде приходят данные, не понятно что с ними происходит не ясна и близко конфигурация которая там отрабатывает, кто тебе сказал что веб сервер там както задействован кроме ретрансляции запроса к php-fpm?
    А вы уже уничтожили решение признав его несостоятельным.
    Это не серьезный подход даже если реализация действительно плохая.
     
    #12 Zuldek, 24 окт 2017
    Последнее редактирование: 24 окт 2017
  13. Bautech

    Bautech Новичок

    С нами с:
    24 окт 2017
    Сообщения:
    10
    Симпатии:
    0
    Просто я хотел узнать верно ли я понял действительно ли в текущем коде сделано тупо тайм лимит если я запустил полную выгрузку, то у них прописано не давать запускать еще 7 часов? или не хватает кода чтобы это выяснить могу докинуть более полный кусок
     
  14. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    не хватает однозначно. нужны все зависимые исходники и, главное, бизнес-требования
     
  15. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    а каждый раз все товары импортируются? а не только обновленные или добавленные?
     
  16. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    ох, ладно. Погорячился, был не прав. Вполне возможно, что веб-сервер и php-fpm лишь создают таск, который подхватывается каким-нибудь сервером очередей, выполняется в фоне, ничего не блокирует и лишнего не отжирает.
     
  17. Bautech

    Bautech Новичок

    С нами с:
    24 окт 2017
    Сообщения:
    10
    Симпатии:
    0
    скинул в личку полный скрипт
    если все то запуск с full, если часть то без full запуск
     
  18. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    https://gist.github.com/
     
  19. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.860
    Симпатии:
    749
    Адрес:
    Татарстан
    может требования были чтоб не чаще раза в 7 часов
    .... а так - похоже у вас выгрузка формат поменяла - вот и сюрприз. Ну 1С обновили например, или еще чего
     
  20. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Больше похоже на исчерпание лимита по памяти / времени.
     
  21. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    ну то что запускается раз в 7 часов мы уже поняли) а почему часть каталогов пропускает не понятно...
    и да, он должен довольно таки долго работать, лимиты временные сняты и используются методы WP для добавления товаров (постов), обновления тегов и т.п.
    то есть базу должен молотить сильно..
     
    Bautech нравится это.
  22. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    По терпению заказчика :D
     
    Bautech и romach нравится это.
  23. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    что бы понять почему не все грузит - надо смотреть логи и пытаться на сервере запускать все это добро и смотреть что там происходит.
     
  24. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    @Zuldek ты конечно прав, но я таки тоже не ошибся ))
    --- Добавлено ---
    Смотри логи php, php-fpm, nginx на предмет out of memory, time limit и прочих bad gatway и gateway timeout.
     
  25. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    да я только скрипт увидел.. ничего необычного.. все стандартно.. каких то специальных глюков не увидел))