Php 自动化xml导入的正确方法是什么
我编写了一个脚本,通过从源磁盘选择xml文件并通过按钮submital上传,将数据从xml文件导入mysql数据库。但是,如果要使用第三方应用程序来自动化此导入,该怎么办。检查xml路径的get参数是否存在并获取其内容并以与我以前相同的方式导入是否合适?还是有更好的方法 get参数的意思是:Php 自动化xml导入的正确方法是什么,php,xml,web-services,Php,Xml,Web Services,我编写了一个脚本,通过从源磁盘选择xml文件并通过按钮submital上传,将数据从xml文件导入mysql数据库。但是,如果要使用第三方应用程序来自动化此导入,该怎么办。检查xml路径的get参数是否存在并获取其内容并以与我以前相同的方式导入是否合适?还是有更好的方法 get参数的意思是: http://domain.com/import.php?path=externaldomain.com/xml/page.xml 这取决于要导入的数据类型。如果您从rss提要导入数据,则此方法很好。但是
http://domain.com/import.php?path=externaldomain.com/xml/page.xml
这取决于要导入的数据类型。如果您从rss提要导入数据,则此方法很好。但是,如果您要导入个人数据,这可能不是一个好方法
如果您使用的是别人不应该看到的关键数据,我建议您使用更安全的方法。您可以开始考虑通过ftp导入xml文件,从服务器保护的文件夹后面下载它们。要求第三方应用程序将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和Gzip之后,也可以直接下载/保存到文件中
使用curl\u getinfo()
可以获得有关请求的各种信息。如果这个过程应该是自动化的,那么最好决定在请求失败时该怎么做
然后,如果文件不大(我指的是超过200-300MB的真正大的文件),您可以使用SimpleXML
(仅在PHP5之后可用)库解析数据。如果您在PHP4下(今天仍然可以),请尝试查找libXML
,这也非常有用
如果您检索到的文件相当大:)具有
文件权限的MySQL数据库是您的朋友。首先,我建议您使用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和Gzip之后,也可以直接下载/保存到文件中
使用curl\u getinfo()
可以获得有关请求的各种信息。如果这个过程应该是自动化的,那么最好决定在请求失败时该怎么做
然后,如果文件不大(我指的是超过200-300MB的真正大的文件),您可以使用SimpleXML
(仅在PHP5之后可用)库解析数据。如果您在PHP4下(今天仍然可以),请尝试查找libXML
,这也非常有用
如果您检索到的文件相当大:)具有文件权限的MySQL数据库是您的朋友。如果您可以获取JSON格式的数据。相信我,事情会顺利得多。想象一下,用PHP的JSON\u encode($a,true)
将JSON对象转换成一个关联数组。然后,您所要做的就是使用一个mysql语句来插入数据,或者如果您能够以JSON格式获取数据,则执行其他操作。相信我,事情会顺利得多。想象一下,用PHP的JSON\u encode($a,true)
将JSON对象转换成一个关联数组。然后,您所要做的就是使用mysql语句为电子商务站点插入或验证与产品库存信息(如数量)相关的内容。xml文件有大约35k条数据记录。如果get方法是实现自动化的常规方法,那么我将采用这种方法。感谢电子商务网站,它涉及产品库存信息,如数量。xml文件有大约35k条数据记录。如果get方法是实现自动化的常规方法,那么我将采用这种方法。谢谢