tiset

tiset
Рейтинг
45
Регистрация
17.04.2011

Там исходный xml такой ломанный. Грузится плагином гдеслоншоп.

Так как выгрузки большие, состряпал нечто похожее на скрипт по разбивке большого .xml.zip на несколько маленьких и хочу в этом же скрипте замутить исправление корявого дескрипшина.


<?php
if(!empty($_POST['name'])){
$name = trim(strip_tags($_POST['name']));
}

$filen=file_get_contents("$name");
if (!function_exists("file_put_contents"))
{
function file_put_contents($filename, $data, $file_append = false)
{
$fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
if(!$fp) {
trigger_error('file_put_contents cannot write in file.', E_USER_ERROR);
return;
}
$result = fputs($fp, $data);
fclose($fp);
return $result;
}
}
file_put_contents("1.zip", $filen);
$zip = new ZipArchive;
if ($zip->open('1.zip') === TRUE) {
// путь к каталогу, в который будут помещены файлы
$zip->extractTo('zip');
if ($zip->open('1.zip') == TRUE) {
for ($i = 0; $i < $zip->numFiles; $i++) {
$filename = $zip->getNameIndex($i);
echo $filename.'<br>';
}
}
echo 'yes';
$zip->close();
} else {
echo 'no';
}
$x_limit = 230000; // нужный размер в байтах (символ ASCII - 1 байт)
set_time_limit(90); $t_start = microtime(1);
$path_ulr2='XXXX';
$path_ulr='XXXXX';
$str_xml=file_get_contents($path_ulr.$filename);
if (preg_match('|<\?xml[^>]*?\?>(.*?)<offer[^>]*?>|sei', $str_xml, $arr)) $hider = $arr[1];
else $hider='';
$x_res=NULL;
$x_r=array('/<\?xml[^>]*?\?>/i','/<offers>/i','/<\/offers>/i');
$str_xml=preg_replace($x_r,'',stristr($str_xml,'<url>')); // удаляем header и footer
$im_or="original_picture"; $im_pi="picture";
$str_xml=str_replace($im_or,$im_pi,stristr($str_xml,'<url>'));
$str_xml=str_replace('<thumbnail>','<!--<thumbnail>',stristr($str_xml,'<url>'));
$str_xml=str_replace('</thumbnail>','</thumbnail>-->',stristr($str_xml,'<url>'));
//удаление description
if(isset($_POST['terms']) && $_POST['terms'] == 1) {
$str_xml=preg_replace('/<description>(.*?)<\/description>/is','<description><![CDATA[]]></description>',stristr($str_xml,'<url>'));
}
preg_match_all("/<offer[^>]*?>.{1,10000}<\/offer>/is", $str_xml, $x_res);
echo 'max used memory '.number_format((memory_get_usage()-$m_start)/(1024*1024))." Mb<br />\n"; $str_xml=NULL;
$x_join = $x_limit/10000; // укрупнение массива
foreach ($x_res[0] as $value): $i++; $value1 .= $value;
if(!($i%$x_join)) { $x_arr[]=$value1; unset($value1); }
endforeach; $x_arr[]=$value1;
$x_res=NULL;
// header и footer
$x_s='<?xml version="1.0" encoding="UTF-8"?>'
.$hider.
'<offers>';
$x_e='</offers>
</shop>
</yml_catalog>';
// форматирование и запись
$i=1; foreach ($x_arr as $value): $value = $x_s."\n".$value."\n".$x_e;
$z=$i;
file_put_contents('gdeslon_'.$i++.'.xml',$value);
$zip = new ZipArchive;
if ($zip->open('gdeslon_'. $z .'.zip', ZipArchive::CREATE) === true){
$zip->addFile('gdeslon_'. $z .'.xml');
echo $path_ulr2.'gdeslon_'. $z .'.zip<br>';
$zip->close();
}
else{
echo 'no';
}
endforeach;
if($value) echo 'file split - ok - used time - '.round((microtime(1)-$t_start),4).' sec';
?>

Спасибо исправил, а по вопросу то что?

Настроил бы бот на задержку 15с и все бы были довольны)

У меня в ЯВ с некоторого времени куча ссылок появилось с платников одностраничников, по моему та же шняга.

vold57:
Для себя определил, что если нет причин держаться за домен, то лучше не терять время и перелить сайт.

У меня домен под АГС - сам дурак купил такой. Если сайт перелить на другой ,то могут у меня возникнуть проблемы с аккаунтом adSens ( указывал как основной при регистрации)?

12
Всего: 14