Hi, try something like this for full Oxid framework support and low memory
ussage:
<?php
class simple_export extends oxAdminView
{
public function render()
{
$myConfig = $this->getConfig();
set_time_limit(0);
ob_end_flush();
ob_implicit_flush(true);
$sFilePath = $myConfig->getConfigParam( 'sShopDir' ) .
'/export/products.xml';
$rFile = fopen($sFilePath, "w");
fwrite($rFile, '<?xml version="1.0" encoding="UTF-8"?>');
fwrite($rFile, '<products>');
$sArticleTable = getViewName( 'oxarticles' );
$sO2CView = getViewName( 'oxobject2category' );
$oArticleList = oxNew('oxArticleList');
$oArticleBase = $oArticleList->getBaseObject();
$oArticleBase->setSkipAbPrice(true);
$oArticleBase->setLoadParentData(false);
$oArticleBase->setNoVariantLoading(true);
$sFields = $oArticleBase->getSelectFields();
$sSelect = "SELECT $sFields , oc.oxcatnid FROM $sO2CView as oc left
join $sArticleTable
ON $sArticleTable.oxid = oc.oxobjectid
WHERE ".$oArticleBase->getSqlActiveSnippet()." and
$sArticleTable.oxparentid = ''
GROUP BY oc.oxcatnid, oc.oxobjectid ";
$oArticleSaved = clone $oArticleBase;
$rs = oxDb::getDb(true)->Execute( $sSelect);
$i=100;
$iTime = microtime( true );
if ($rs != false && $rs->recordCount() > 0) {
while (!$rs->EOF) {
$oArticle = clone $oArticleSaved;
$oArticle->assign($rs->fields);
if ($i==100) {
$i=0;
echo ' . ';
// echo '<ul>';
// echo '<li>';
// var_dump(memory_get_usage());
// echo '</li>';
// echo '<li>';
// var_dump(memory_get_usage(true));
// echo '</li>';
// echo '</ul>';
}
else {
$i++;
}
fwrite($rFile, '<product id="'.$oArticle->getId().'">');
fwrite($rFile,
'<title><![CDATA['.$oArticle->oxarticles__oxtitle->value.']]></title>'."\n");
fwrite($rFile,
'<information><![CDATA['.$oArticle->oxarticles__oxshortdesc->value.']]></information>'."\n");
fwrite($rFile,
'<price>'.sprintf('%01.2f',$oArticle->brutPrice).'</price>'."\n");
fwrite($rFile,
'<url><![CDATA['.$oArticle->getLink().']]></url>'."\n");
fwrite($rFile,
'<changed><![CDATA['.$oArticle->oxarticles__oxtimestamp->value.']]></changed>'."\n");
fwrite($rFile, '<images>'."\n");
fwrite($rFile,
'<thumb><![CDATA['.$oArticle->getThumbnailUrl().']]></thumb>'."\n");
fwrite($rFile,
'<preview><![CDATA['.$myConfig->getPictureUrl(
'1/'.basename($oArticle->oxarticles__oxpic1->value)).']]></preview>'."\n");
fwrite($rFile, '</images>'."\n");
$oAttributes = $oArticle->getAttributes();
if ($oAttributes) {
fwrite($rFile, '<attributes>'."\n");
foreach($oAttributes as $oAttr) {
fwrite($rFile, '<attribute
name="'.$oAttr->oxattribute__oxtitle->value.'">'."\n");
fwrite($rFile,
'<value><![CDATA['.$oAttr->oxattribute__oxvalue->rawValue.']]></value>'."\n");
fwrite($rFile, '</attribute>'."\n");
}
fwrite($rFile, '</attributes>'."\n");
}
else {
fwrite($rFile, '<attributes />'."\n");
}
fwrite($rFile, '</product>'."\n");
$oArticle = null;
$rs->moveNext();
}
}
fwrite($rFile, '</products>');
fclose($rFile);
$sURL = $myConfig->getConfigParam( 'sShopURL' ) . $this->_sFileName;
echo '<a href="'.$sURL.'">'.$sURL.'</a>';
die(0);
}
}
_______________________________________________
dev-general mailing list
[email protected]
http://dir.gmane.org/gmane.comp.php.oxid.general