За последние 24 часа нас посетили 20365 программистов и 1584 робота. Сейчас ищут 1890 программистов ...

Помогите распарсить XML

Тема в разделе "Сделайте за меня", создана пользователем new_bember, 20 дек 2016.

  1. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    Пните меня в правильном направлении, пожалуйста. Есть следующая задача:
    На фтп на протяжении дня падают зип архивы вида GUID.mbsu, GUID на данный момент две штуки (айдишники торговых). Нужно этот архив распаковать, достать оттуда xml - с этим я вроде разобрался.
    XML содержит информацию о заказах/оплатах в следующем виде
    <T_ORDER_TITLE>
    <N_CARRY>true</N_CARRY>
    <N_CHECK_NUMBER></N_CHECK_NUMBER>
    <N_CLIENTID>198785</N_CLIENTID>
    <N_COMMENT></N_COMMENT>
    <N_CONTRACTID>81</N_CONTRACTID>
    <N_CREATE_DATE>1478604069724</N_CREATE_DATE>
    <N_DATE>1478604594096</N_DATE>
    <N_DELAY>true</N_DELAY>
    <N_FORMID>1</N_FORMID>
    <N_GEOADDRESS>проспект Михайла Грушевського, 82, Коломия, Івано-Франківська область, Украина</N_GEOADDRESS>
    <N_HAVE_DISCOUNT>false</N_HAVE_DISCOUNT>
    <N_ID>70ebca18-fa1c-4ab3-a93b-b762ad81138d</N_ID>
    <N_LAT>48.5259135</N_LAT>
    <N_LNG>25.0280832</N_LNG>
    <N_MESSAGE_NUMBER>0</N_MESSAGE_NUMBER>
    <N_PARENTID>198785</N_PARENTID>
    <N_PRICEID>22</N_PRICEID>
    <N_SHIPMENT_DATE>0</N_SHIPMENT_DATE>
    <N_SUM>358.0</N_SUM>
    <N_WAREHOUSE_ID>ALL</N_WAREHOUSE_ID>
    </T_ORDER_TITLE>
    <T_ORDER_TABLE>
    <N_DATE>1478604594096</N_DATE>
    <N_DISCOUNT_PERCENT>0.0</N_DISCOUNT_PERCENT>
    <N_FACTOR>1.0</N_FACTOR>
    <N_ID>70ebca18-fa1c-4ab3-a93b-b762ad81138d1000004215</N_ID>
    <N_LINE_NUMBER>1</N_LINE_NUMBER>
    <N_MANUAL_PRICE>false</N_MANUAL_PRICE>
    <N_NOMENID>1000004215</N_NOMENID>
    <N_NUMBER>1.0</N_NUMBER>
    <N_PRICE>37.0</N_PRICE>
    <N_SUM>37.0</N_SUM>
    <N_TITLEID>70ebca18-fa1c-4ab3-a93b-b762ad81138d</N_TITLEID>
    <N_UNIT_ID>ALL</N_UNIT_ID>
    </T_ORDER_TABLE>
    <T_CASH_ORDERS>
    <N_BASE_ID>51137cff-f8ca-4c08-88dd-062cf3602fc9</N_BASE_ID>
    <N_CARRY>true</N_CARRY>
    <N_CHECK_NUMBER></N_CHECK_NUMBER>
    <N_COMMENT></N_COMMENT>
    <N_CONTRACTID>162</N_CONTRACTID>
    <N_CREATE_DATE>1478764605513</N_CREATE_DATE>
    <N_DATE>1478764607794</N_DATE>
    <N_DEBT_NUMBER>Новый 433,80 $ 10.11.2016 07:56:19</N_DEBT_NUMBER>
    <N_DEBT_TYPE>Заказ</N_DEBT_TYPE>
    <N_FORMID>1</N_FORMID>
    <N_GEOADDRESS>М06, Закарпатська область, Украина</N_GEOADDRESS>
    <N_ID>f7670019-df2d-4d1a-b097-afe8502dbba1</N_ID>
    <N_LAT>48.4681651</N_LAT>
    <N_LNG>22.6181861</N_LNG>
    <N_MESSAGE_NUMBER>0</N_MESSAGE_NUMBER>
    <N_PARENTID>198594</N_PARENTID>
    <N_SUM>433.8</N_SUM>
    </T_CASH_ORDERS>

    T_ORDER_TITLE - общая информация о заказе
    T_ORDER_TABLE - информация по каждой позиции заказа
    T_CASH_ORDERS - оплата по заказу
    Этих элементов может быть много, типа несколько заказов сразу. Мне нужно для каждого заказа/оплаты получить xml вида:
    <DocID xmlns="Documents" CodeSpace="my" DocID="57614" VersionID="1" BranID="101" BranName="PCH">
    <CreID xmlns="Subjects" SubjID="159">
    <SubjName>Склад Машина</SubjName>
    </CreID>
    <DebID xmlns="Subjects" SubjID="1083">
    <SubjName>Склад Хмельницький</SubjName>
    </DebID>
    <TemplID xmlns="Templates" TemplID="41" TemplName="Товар на склад"/>
    <PriceID xmlns="PriceHeads" PriceID="22" PriceName="Базова"/>
    <DocCode>43585518</DocCode>
    <ExtraDoc> </ExtraDoc>
    <Comments/>
    <GDS>-1</GDS>
    <DocDate>20161205</DocDate>
    <DocTax>0</DocTax>
    <DocSum>440</DocSum>
    <DocTaxSum>0</DocTaxSum>
    <AddrID/>
    <RateLimit>0</RateLimit>
    <Patterns xmlns="Patterns">
    <Item GlobID="1000002707" ItemID="16149471" ItemName="Dekomarin 65cm A 20" ItemExt="" ItemShort="65cm A 20" ExtraCode="A 20" PerPack="1" PerCase="1" PerPall="1" Weight="8.7" Volume="0.063" SUF="" BaseTax="0" EAN="8690552310065" GDS="-1" AlcTax="" TAR="0" UnitFactor="1" UnitName="штука" UnitShort="шт." WGT="0" ProdID="1000000007" ProdName="On Grup" MarkID="1000000033" MarkName="D65m">
    <BasePrice>38</BasePrice>
    <Price>38</Price>
    <Ordered>0</Ordered>
    <Quantity>2</Quantity>
    <Discount>0</Discount>
    </Item>
    </Patterns>
    </DocID>


    Пока получил общую информацию по заказам:
    Код (Text):
    1. <?php
    2. /**
    3. * @author new_bember
    4. * @copyright 2016
    5. */
    6. $dir = 'C:\in';
    7. $files = scandir($dir);
    8. $filename = $files[2];
    9. print_r($filename);
    10. $xml = simplexml_load_file("C:\\in\\".$filename) or die ("Error. Cannot create object");
    11. foreach ($xml->T_ORDER_TITLE as $element) {
    12.   echo "Order number: ".$element->N_ID . ", ";
    13.   echo "SubjID: ".$element->N_PARENTID . ", ";
    14.   echo "OrderSum: ".$element->N_SUM . "<br>";  
    15. }
    16. ?>
    А вот чего дальше делать, что-то не догоняю.. Я конечно курю все эти доки, но пинок в правильном направлении будет хорошим подспорьем. Заранее благодарен.
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Получить или сгенерировать?
     
  3. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    Ну таки сгенерировать. Сгенерировать вторую хмлку в посте, подставив туда данные из первой, айдишники товара/клиента.
    Я с этой хмл работаю как с массивом, это правильно вообще?
    Вот так вот я достал заказы и относящиеся к ним товары:
    Код (Text):
    1. <?php
    2.  
    3. /**
    4. * @author new_bember
    5. * @copyright 2016
    6. */
    7. $dir = 'C:\in';
    8. $files = scandir($dir);
    9. $filename = $files[2];
    10. //print_r($filename);
    11. $xml = simplexml_load_file("C:\\in\\".$filename) or die ("Error. Cannot create object");
    12. $order_count = $xml->T_ORDER_TITLE->count();
    13. echo "Orders count: " . $order_count . "<br>";
    14. $items_count = $xml->T_ORDER_TABLE->count();
    15. echo "Items quantity: " . $items_count . "<br>";  
    16. $pko_count = $xml->T_CASH_ORDERS->count();
    17. echo "Payments count: " . $pko_count . "<br>";
    18. for ($i=0; $i<$order_count; $i++) {
    19.     for ($j=0; $j<$items_count; $j++) {
    20.        if ($xml->T_ORDER_TITLE[$i]->N_ID = $xml->T_ORDER_TABLE[$j]->N_TITLEID)
    21.             echo "Ordered: " . $xml->T_ORDER_TITLE[$i]->N_ID . ", " . $xml->T_ORDER_TABLE[$j]->N_NOMENID . "<br>";
    22.     }      
    23. }  
    24. ?>
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Ну если он массив да, как с массивом надо и работать)).
    создай ручками статический xml файл нужной тебе структуры, потом открывай его и добавляй нужные данные.

    Или же используя класс SimpleXMLElement генерируй его на лету.
     
    new_bember нравится это.
  5. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    Курю ман и готовлю болванку хмл, но пока спрошу, а реально ли сделать так: я в болванку сразу переменные в нужных местах забью, а потом в момент когда переменные инициализированы я файл открою и тут же сохраню уже с данными?
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ага, делай через короткий синтаксис echo: <?=$foo?> и файл через include, но лучше через str_replace() и file_get_contents()
     
    new_bember нравится это.
  7. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    include order.xml
    include payment.xml
    ?
    Короткий синтаксис - где конкретно об этом можно прочитать?
     
  8. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    PHP:
    1. $order_number = $xml->T_ORDER_TITLE[0]->N_ID->__toString();
    2.  
    3. for ($i=0; $i<$items_count; $i++) {
    4.     $item_order = $xml->T_ORDER_TABLE[$i]->N_TITLEID->__toString();
    5.     if ($item_order = $order_number)
    6.         print_r ($xml->T_ORDER_TABLE[$i]->N_NOMENID);
    7. }
    8.    
    Кто подскажет почему $item_order не меняется когда счётчик тикает? Чувствую, что мелочь какую-то упустил, а какую - не могу понять.
    --- Добавлено ---
    PHP:
    1. if (strcasecmp($item_order, $order_number) == 0)
    Вот оно чё не стреляло - незаряжено былО.
     
  9. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    PHP:
    1. for ($i=0; $i<$order_count; $i++) {
    2.     for ($j=0; $j<$items_count; $j++) {
    3.         $order_number = $xml->T_ORDER_TITLE[$i]->N_ID->__toString();
    4.         $item_order = $xml->T_ORDER_TABLE[$j]->N_TITLEID->__toString();
    5.         if (strcasecmp($item_order, $order_number) == 0)
    6.           echo "Ordered: " . $xml->T_ORDER_TITLE[$i]->N_ID . ", " . $xml->T_ORDER_TABLE[$j]->N_NOMENID . "<br>";
    7.     }      
    8. }
    Ну вроде получаю я всё что нужно перебирая массив в этом цикле, а что у нас с видимостью переменных или как результат вернуть кроме как на экран? Мне в этом же цикле запускать str_replace() или функцию отдельно писать для заполнения файла и тут её вызывать?
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    документация по echo

    вместо echo собирать всё в переменную $buff .= 'тут текст'; точка означает такое примерно $buff = $buff.'тут текст';

    можно в цикле
     
    new_bember нравится это.
  11. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    PHP:
    1. for ($i=0; $i<$order_count; $i++) {
    2.     $ClientID = $xml->T_ORDER_TITLE[$i]->N_CLIENTID->__toString();
    3.     $neworder = str_replace("%ClientID%", $ClientID, $empty_order);
    4.     $neworder->asXML($ClientID . ".xml");
    Подскажите, пожалуйста, что не так с asXML? Тут у меня та самая ошибка про "call to a member function asxml() on a non-object".
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    $neworder там результат str_replace, что она по документации возвращает?
     
  13. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    По документации она возвращает строку или массив (если массив на входе был), у меня вроде строка получается, глянул var_dump и в отладчике. Мне кажется что проблема в отсутствии в заголовке строки <?xml version="1.0" encoding="UTF-8"?>, потому что вот это вот отрабатывает нормально:
    PHP:
    1. for ($i=0; $i<$order_count; $i++) {
    2.     $ClientID = $xml->T_ORDER_TITLE[$i]->N_CLIENTID->__toString();
    3.     $neworder = str_replace("%ClientID%", $ClientID, $empty_order);
    4.     var_dump($neworder);
    5.     file_put_contents($ClientID.'.xml', $neworder);
    6. //    $neworder->asXML($ClientID . ".xml");
    7. //    echo $neworder->asXML();
    --- Добавлено ---
    HTML:
    1. <DocID xmlns="Documents" CodeSpace="SAV" DocID="" VersionID="1" BranID="101" BranName="PCH">
    2.     <CreID xmlns="Subjects" SubjID="%GUID%">
    3.         <SubjName></SubjName>
    4.     </CreID>
    5.     <DebID xmlns="Subjects" SubjID="%ClientID%">
    6.         <SubjName></SubjName>
    7.     </DebID>
    8.     <TemplID xmlns="Templates" TemplID="11"/>
    9.     <PriceID xmlns="PriceHeads"/>
    10.     <GDS>-1</GDS>
    11.     <DocDate>%DocDate%</DocDate>
    12.     <DocTax>0</DocTax>
    13.     <DocSum>%OrderAmount%</DocSum>
    14.     <DocTaxSum>0</DocTaxSum>
    15.     <RateLimit>0</RateLimit>
    16.     <Patterns xmlns="Patterns">
    17.         <Item GlobID="%ItemID%" GDS="-1">
    18.             <BasePrice></BasePrice>
    19.             <Price>%Price%</Price>
    20.             <Ordered>0</Ordered>
    21.             <Quantity>%Qty%</Quantity>
    22.             <Discount>0</Discount>
    23.         </Item>
    24.     </Patterns>
    25. </DocID>
    26.  
    И ещё, верхнюю часть файла нужно заполнять за несколько проходов по очереди меняя переменные и давая на вход то что получилось в переменной $neworder?
    А каким макаром добавить несколько элементов <Item>?
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а ты вызываешь метод у текста или массива, пытаешься с текстом или массивом работать как с объектом класса

    работает то что ты закомментировал?

    в цикле с помощью соединения строк если ты пошёл этим способом
     
    new_bember нравится это.
  15. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    А мне-то при наличии готовой болванки хмл, видимо правильнее работать с ней через file_put_contents(), я ведь только текст меняю, а __asXML() был бы смысл использовать если бы я генерировал хмл на лету, правильно?
     
  16. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    Становится всё интереснее:
    Allowed memory size of 134217728 bytes exhausted (tried to allocate 79788736 bytes)

    Подскажите где накосячил? Чуствую, что нужно было где-то какие-то переменные обнулять или что-то типа того. Вот то что пытаюсь запустить:
    PHP:
    1. $dir = 'C:\in'; // папка входящих файлов
    2. $files = scandir($dir);
    3. $filename = $files[2]; // получаем имя файла через жопу, но это временно.
    4. //print_r($filename);
    5.  
    6. // Переменные для замены
    7. $xGUID;
    8. $xClientID;
    9. $xDocDate; // check about unix date
    10. $xOrderAmount;
    11. $xItemID;
    12. $xPrice;
    13. $xQty;
    14. $pItems = '<Patterns xmlns="Patterns">';
    15.  
    16. $empty_order = file_get_contents('C:\in\order.xml');
    17. $xml = simplexml_load_file("C:\\in\\".$filename) or die ("Error. Cannot create object");
    18. $order_count = $xml->T_ORDER_TITLE->count();
    19. echo "Orders count: " . $order_count . "<br>";
    20. $items_count = $xml->T_ORDER_TABLE->count();
    21. echo "Items quantity: " . $items_count . "<br>";  
    22. $pko_count = $xml->T_CASH_ORDERS->count();
    23. echo "Payments count: " . $pko_count . "<br>";
    24. for ($i=0; $i<$order_count; $i++) {
    25.     $xClientID = $xml->T_ORDER_TITLE[$i]->N_CLIENTID->__toString();
    26.     $xOrderAmount = $xml->T_ORDER_TITLE[$i]->N_SUM->__toString();
    27.     $neworder = str_replace("%ClientID%", $xClientID, $empty_order);
    28.     $neworder = str_replace('%OrderAmount%', $xOrderAmount, $neworder);
    29.    
    30.     //    $neworder->asXML($ClientID . ".xml");
    31. //    echo $neworder->asXML();
    32.         for ($j=0; $j<$items_count; $j++) {
    33.             $order_number = $xml->T_ORDER_TITLE[$i]->N_ID->__toString();
    34.             $item_order = $xml->T_ORDER_TABLE[$j]->N_TITLEID->__toString();
    35.                 if (strcasecmp($item_order, $order_number) == 0)
    36.                     echo "Ordered: " . $xml->T_ORDER_TITLE[$i]->N_ID . ", "   . "<br>";
    37.                     $xItemID = $xml->T_ORDER_TABLE[$j]->N_NOMENID->__toString();
    38.                     $xPrice = $xml->T_ORDER_TABLE[$j]->N_PRICE->__toString();
    39.                     $xQty = $xml->T_ORDER_TABLE[$j]->N_NUMBER->__toString();
    40. $pItems .=  '<Patterns xmlns="Patterns">
    41.            <Item GlobID="'.$xItemID.'" GDS="-1">
    42.            <BasePrice></BasePrice>
    43.            <Price>'.$xPrice.'</Price>
    44.            <Ordered>0</Ordered>
    45.            <Quantity>'.$xQty.'</Quantity>
    46.            <Discount>0</Discount>
    47.        </Item>';
    48.         $neworder = str_replace('<Patterns xmlns="Patterns">', $pItems, $neworder);
    49.         file_put_contents($xClientID.'.xml', $neworder);
    50.     }      
    51. }
    52. var_dump($pItems);
     
  17. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    А потому что в реальном мире с xml так не работают ) Они обычно большие и потому писать / читать их нужно потоком, иначе тебе никакой оперативки не хватит. XMLReader / XMLWriter тебе в помощь, чуть менее удобно конечно, но зато не упрешься в лимиты.
    Код (Text):
    1. // вот так уже давно быстрее, чем остальные варианты:
    2. echo "Orders count: $order_count <br>";
     
    new_bember нравится это.
  18. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    SimpleXML это не из той же оперы что и XMLReader / XMLWriter. В лимиты я упёрся потому, что скобки фигурные пропустил после IF.
    Всем спасибо за помощь, вроде готова основная часть:
    PHP:
    1. <?php
    2.  
    3. /**
    4. * @author new_bember
    5. * @copyright 2016
    6. */
    7. $dir = 'C:\in'; // папка входящих файлов
    8. $files = scandir($dir);
    9. $filename = $files[2]; // получаем имя файла через жопу, но это временно.
    10. // Переменные для замены
    11. $xGUID = '159'; // Sales GUID 159/160 depends on filename
    12. $xClientID; // Выбрать другой из базы
    13. $xDocDate; // check about unix date. Done.
    14. $xOrderAmount;
    15. $xItemID;
    16. $xPrice;
    17. $xQty;
    18. $pItems = '<Patterns xmlns="Patterns">';
    19. // ---
    20. $empty_order = file_get_contents('C:\in\order.xml');
    21. $xml = simplexml_load_file("C:\\in\\".$filename) or die ("Error. Cannot create object");
    22. $order_count = $xml->T_ORDER_TITLE->count();
    23. //echo "Orders count: " . $order_count . "<br>";
    24. $items_count = $xml->T_ORDER_TABLE->count();
    25. //echo "Items quantity: " . $items_count . "<br>";  
    26. $pko_count = $xml->T_CASH_ORDERS->count();
    27. //echo "Payments count: " . $pko_count . "<br>";
    28. $baseMemory = memory_get_usage();
    29. for ($i=0; $i<$order_count; $i++) {
    30.     $xClientID = $xml->T_ORDER_TITLE[$i]->N_CLIENTID->__toString();
    31.     $xOrderAmount = $xml->T_ORDER_TITLE[$i]->N_SUM->__toString();
    32.     $ymd = gmdate("Ymd", substr($xml->T_ORDER_TITLE->N_CREATE_DATE->__toString(),0,10));
    33.     $neworder = str_replace('%ClientID%', $xClientID, $empty_order);
    34.     $neworder = str_replace('%GUID%', $xGUID, $neworder);
    35.     $neworder = str_replace('%OrderAmount%', $xOrderAmount, $neworder);
    36.     $neworder = str_replace('%DocDate%', $ymd, $neworder);
    37.     $pItems = '<Patterns xmlns="Patterns">
    38.    ';
    39.         for ($j=0; $j<$items_count; $j++) {
    40.             $order_number = $xml->T_ORDER_TITLE[$i]->N_ID->__toString();
    41.             $item_order = $xml->T_ORDER_TABLE[$j]->N_TITLEID->__toString();
    42.                 if (strcasecmp($item_order, $order_number) == 0) {
    43.                     $xItemID = $xml->T_ORDER_TABLE[$j]->N_NOMENID->__toString();
    44.                     $xPrice = $xml->T_ORDER_TABLE[$j]->N_PRICE->__toString();
    45.                     $xQty = $xml->T_ORDER_TABLE[$j]->N_NUMBER->__toString();
    46.                     $pItems .=
    47. '<Item GlobID="'.$xItemID.'" GDS="-1">
    48.    <BasePrice></BasePrice>
    49.    <Price>'.$xPrice.'</Price>
    50.    <Ordered>0</Ordered>
    51.    <Quantity>'.$xQty.'</Quantity>
    52.    <Discount>0</Discount>
    53. </Item>
    54. ';
    55.         }
    56.     }
    57.         $neworder = str_replace('<Patterns xmlns="Patterns">', $pItems, $neworder);
    58.         file_put_contents($xClientID.'.xml', $neworder);
    59. }
    Сейчас код обрабатывает нужный мне файл и формирует файлы хмл для последующего импорта в базу.
    Вопросы к специалистам:
    1. Что в этом коде неправильно/некошерно/можно сделать лучше?
    2. Сейчас скрипт ищет файл для обработки на фтп, но я заметил, что МТС (Украина) не даёт подключиться к фтп если у телефона соединение с интернетом EDGE (2G) (а телефоны не могут в 3ж, потому что они американцы), куда копать для того чтобы файлы для обработки получать из почты?
    3. А ещё есть у меня MS SQL 2008r2 сервер с доступом по впн - есть идеи как к нему запрос можно сделать из этого же скрипта?
     
  19. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    А из какой? Ну а так то пофиг на самом деле, удачи в продакшене )
     
  20. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    тебе с этого надо было начинать
    https://php.ru/forum/threads/php-to-ms-sql-server-2016.61353/#post-495543
    там эта тема и обсуждается
     
    new_bember нравится это.
  21. new_bember

    new_bember Новичок

    С нами с:
    20 дек 2016
    Сообщения:
    19
    Симпатии:
    0
    Пока остаётся один вопрос, подскажите оптимально где почитать про получение файла из аттача почты. Скрипт на сайте, почта там же.
     
  22. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    почта там же в каком смысле? Доступ к EML есть?