自动化xml导入的正确方法是什么


what would be the proper way to automate an xml import

我已经编写了一个脚本,通过从源磁盘中选择数据并通过按钮submedial上传,将数据从xml文件导入mysql数据库。但是,如果使用第三方应用程序来自动化此导入,该怎么办。检查xml路径的get参数是否存在,并像以前那样获取其内容和导入是否合适?或者有更好的方法吗?

我的意思是:

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

这取决于导入的数据类型。如果您从rss提要导入数据,这种方法很好。但如果你要导入个人数据,这可能不是一个好方法。

如果你使用的是别人不应该看到的关键数据,我建议你使用更安全的方法。您可以开始考虑通过ftp导入xml文件,从服务器安全文件夹后面下载它们。请第三方应用程序将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(),您可以获得有关您的请求的各种信息。如果程序应该是自动化的,那么如果请求失败,最好决定该怎么办。

然后,如果文件不是很大(我指的是200-300 Mb以上的真正大的文件),您可以使用SimpleXMLPHP5之后才可用)库并解析数据。如果您处于PHP4之下(今天仍然有可能),请尝试查找libXML,这也非常有用。

如果您检索到的文件相当大:)具有FILE权限的MySQL数据库是您的朋友。