دریافت XML عظیم از وب سرویس و import به MySQL ظرف فقط چند ثانیه!
بدلیل کمبود وقت و اصرار بعضی از دوستان عزیز مستقیم میرم سر اصل مطلب و بحث در مورد جزییات رو به خودتون میسپارم
برای دریافت XML از یه سایت دیگه و ذخیره در سایت خودتون
@$ContentsXml = file_get_contents('http://webservice.ir/');
$TempXmlFile = fopen('Temp.xml', 'w');
fwrite($TempXmlFile, $ContentsXml);
fclose($TempXmlFile);
unset($ContentsXml);
unset($TempXmlFile);
برای خواندن XML ذخیره شده در سایت خودتان
$TempSimpleXmlVariable = simplexml_load_file('Temp.xml');
بعد از اون لطفا حافظه رو آزاد کنین
unlink('Temp.xml');
حالا این XML رو به شکل CSV در میاریم
$TempCsvFile = fopen('Temp.csv', 'w');
foreach ($TempSimpleXmlVariable->Item as $OneItem) {
fputcsv($TempCsvFile, (str_replace("&","&",get_object_vars($OneItem) )),',','"');
}
fclose($TempCsvFile);
حالا فقط کافیه فایل CSV مون رو با یه دستور وارد Table کنیم
$Load_Data_Result = mysql_query("LOAD DATA LOCAL INFILE '/.../htdocs/Temp.csv' INTO TABLE `MyTable` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");
درنهایت هم فایلمونو پاک میکنیم
unlink("Temp.csv");
نقل قول: دریافت XML عظیم از وب سرویس و import به MySQL ظرف فقط چند ثانیه!
با این روش موفق میشیم حدود سی میلیون رکورد رو در حدود یک دقیقه توی تیبل خودمون بریزیم
توجهتون رو به تاپیکهای زیر جلب میکنم:
https://barnamenevis.org/showthread.p...A8%D8%A7%D8%B1!
و
https://barnamenevis.org/showthread.p...8%AF%D8%B1-php