Intereting Posts
Резервное копирование базы данных mysql и загрузка в виде файла Codeigniter 2.1.3: sess_destroy () вызывает Неопределенный индекс: session_id и т. Д., Когда «sess_use_database» == TRUE $ _COOKIE , похоже, не отражает изменений после установки Как заставить Laravel вернуть заголовок «Content-Type» в виде «application / javascript»? Запрос: поиск строки в поле базы данных LOAD DATA LOCAL INFILE не работает с php 5.5 с использованием PDO PHP-код для создания безопасного URL-адреса? Как получить facebook нравится, делиться, комментарии подсчитываются из статьи Обновление изображения codeigniter Как скопировать таблицу из одной базы данных mysql в другую базу данных mysql Включение display_errors из внутреннего кода многомерный массив в однослойный массив PHP Есть ли разница в скорости между <? Php echo $ var; ?> и <? = $ var?>? добавьте две или более строки времени в php Корень документа Laravel настроен для домена cpanel – угроза безопасности?

что было бы правильным способом автоматизации импорта xml

Я написал сценарий, который импортирует данные из XML-файла в базу данных mysql, выбирая его с исходного диска и загружая его с помощью кнопки subital. Но что делать, если для автоматизации импорта необходимо использовать стороннее приложение. Было бы правильным проверить, существует ли параметр доступа xml-пути и захватывать его содержимое и импортировать то же, что и раньше? или есть лучший метод?

по параметру get i означает следующее:

http://domain.com/import.php?path=externaldomain.com/xml/page.xml 

это зависит от того, какие данные вы импортируете. Если вы импортируете данные из rss-канала, этот метод прекрасен. Но если вы собираетесь импортировать личные данные, это может быть не очень хороший метод.

Я бы предложил что-то более безопасное, если вы работаете с критическими данными, которые другие не должны видеть. Вы можете начать думать об импорте xml-файлов через ftp, загружать их из-за защищенной папки сервера. Попросите стороннее приложение загрузить файлы xml в безопасное место по вашему выбору. Все, что происходит за какой-то безопасностью, лучше, чем предлагаемый метод для персональных данных.

Во-первых, я бы посоветовал вам использовать cURL . Неважно, насколько огромный будет ваш XML, у вас будет меньше проблем с памятью.

 $fp = fopen('/var/www/vhosts/my.com/xml/feed.xml', 'w'); // opening file handler to write feed in $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://domain.com/xml/page.xml'); // setting URL to take XML from curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); // If result is gziped curl_setopt($ch, CURLOPT_SSLVERSION, 3); // OpenSSL issue curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // Wildcard certificate curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); // disabling buffer output, bec. we want to write XML to the file first and don't need it to be returned into variable curl_setopt($ch, CURLOPT_FILE, $fp); // here we should transfer opened file handler to the cURL and it should be writable! $result = curl_exec($ch); // executing download $reponse_code = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE); // retrieving HTTP return code for our request. Was it successful or not. 

Таким образом, вы можете загружать / сохранять фид XML, даже если он находится за SSL и GZIPed, непосредственно в файл.

Используя curl_getinfo() вы можете получить разнообразную информацию о своем запросе. Если процедура должна быть автоматизирована, то было бы неплохо решить, что делать, если запрос терпит неудачу .

Тогда, если файл SimpleXML ( я имею в виду большие файлы размером выше 200-300 Мб ), вы можете просто использовать SimpleXML ( доступный только с PHP5 ) и проанализировать свои данные. Если вы находитесь под PHP4 ( это все еще возможно сегодня ), попробуйте найти libXML который тоже очень полезен.

Если файл, который вы получили, довольно большой 🙂 База данных MySQL с разрешениями FILE – ваш друг.