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

Reply via email to