php парсер xml файла

463
29 января 2017, 15:54

Есть xml файл

Написал парсер и скрипт, который впоследствии добавляет товары в бы, но он долго работает, а если записей в xml файле больше, то вовсе не успевает до конца сработать.

    $languages = simplexml_load_file("test.xml", null, LIBXML_NOCDATA);
    $i = 0;
    foreach ($languages->groupProduct as $group) {
        if((string) $group['name'] == "01 Плитка") {
            foreach ($group->element_list->element as $element) {
                $data = array(); //массив данных

                $file_name = date('YmdHis').rand(100,1000);
                $data["img"] = $file_name.".jpeg";
                foreach($element->minpart_list->minpart as $minpart) 
                    $data["description"] .= $minpart."<br />";                      
                if ($this->add($data)) {
                    $this->download_remote_file($element->pic, "../".$this->config->dir_img_products.$data["img"]);
                }
                $i++;
            }
        }           
    }
    function download_remote_file($file_url, $save_to) {
        $content = file_get_contents($file_url);
        file_put_contents($save_to, $content);
    }

как можно увеличить работоспособность скрипта?

Answer 1

Да всё простo, у вас(вашего провайдера) фтп медленный. Что вас убивает network latency.

Читайте Защита от частых запросов к странице. Таже проблема у человека была.

У вас несколько вариантов.

  1. Увеличить время скрипта. (Ни чего не решит.)
  2. Использовать очередь работ. (RabbitMq, ZeroMQ ...). Главный скрипт скидывает работы, а качают фоновые скрипты.

http://www.rabbitmq.com/tutorials/tutorial-one-php.html

http://zguide.zeromq.org/php:_start

Answer 2

Просто качайте файлы через curl_multi в несколько потоков (пример).

READ ALSO
Как сохранить себе файл по ссылке

Как сохранить себе файл по ссылке

Как сохранить файл к себе на хостинг по ссылке, находящейся в открытом доступе? Формат xml

438
Как вывести метки записи WP?

Как вывести метки записи WP?

Добавил новый тип записи таким образом:

371
Не отображаются изменения шаблона в Prestashop

Не отображаются изменения шаблона в Prestashop

Не отображаются изменения шаблона в Prestashop, меняю классы и тпНо, на сайте ничего из этого не отображается

440
Не могу понять откуда появляется ���

Не могу понять откуда появляется ���

Всем привет, очень странная вещь происходит, впервые сталкиваюсь

356