Имеется файл с 10 000 наименованиями товаров, скриптом пытаюсь сохранять данные в базу и все зависает, т.к. скрипт полностью пытается обработать файл.
for($i = 0; $i < $count; $i++){
Предложили решение но для страниц
for($i = $_GET['offset']; $i < $_GET['amount']; $i++){
Можно пакетно делить файл и сохранять данные поэтапно, например по 10 товаров за проход?
Скрипт полностью
<?php
set_time_limit(0);
header('Content-type: text/html; charset=utf8');
ini_set("display_errors", "On");
require_once 'config.php';
/* Вариант 2. 2 строки ниже для вставки только новых значений(не заменяя старых) */
$Query = "INSERT IGNORE INTO `xml`(`id_xml`,`date_xml`,`title_xml`,`link_xml`) VALUES";
$ODKU = ';';
$values = "";
$text = "";
function page_title($url){
$fp = file_get_contents($url);
if (!$fp)
return null;
$res = preg_match("/<title>(.*)<\/title>/siU", $fp, $title_matches);
if (!$res)
return null;
// Clean up title: remove EOL and excessive whitespace.
$title = preg_replace('/\s+/', ' ', $title_matches[1]);
$title = trim($title);
return $title;
}
// Получаем XML файл
$file = '/var/www/test.xml'; // сохраняем файл XML
$read = simplexml_load_file($file); // получаем объект класса из файла
$xml = $read->Category->Club;
$count = count($xml); // кол-во элементов массива
for($i = 0; $i < $count; $i++){
$text = page_title('https://test.com='.$xml[$i]->Id.'');
$date_xml = mysql_real_escape_string($xml[$i]->Id);
$title_xml = mysql_real_escape_string($xml[$i]->Title);
$id_xml = mysql_real_escape_string($xml[$i]->Description);
$link_xml = mysql_real_escape_string($xml[$i]->Title);
if (strlen($text) > 0) {
$link_xml = mysql_real_escape_string($text);
} else {
$link_xml = mysql_real_escape_string($xml[$i]->Title);
}
// sleep(SLEEP);
$values .= "('$id_xml', '$date_xml','$title_xml','$link_xml'),";
/* заносим данные в БД если накопилось 1000 записей при подготовке запроса */
if($i % 1000 == 0)
{
$values[strlen($values)-1]=' ';
$res = mysql_query("$Query $values $ODKU");
$values = "";
}
}
if(strlen($values)>0)
{
$values[strlen($values)-1]=' ';
/* заносим данные в БД */
$res = mysql_query("$Query $values $ODKU");
}
echo 'Done';