If you really want to load all products with all information in one run without using up all memory you could do something like
$productIds = Mage::getModel('catalog/product')->getCollection()
->getAllIdsCache();
// Returns a array with 100k ids
foreach ($productIds as $productId) {
// Load one product
$product = Mage::getModel()->load($productId);
/** @var $product \Mage_Catalog_Model_Product */
echo $product->getName();
echo $product->getDescription();
echo $product->getShortDescription();
$product->clearIntance();
}
If you know which attributes to get you could also just add those to your filter and iterate that.
$products = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('name')
->addAttributeToSelect('description')
->addAttributeToSelect('short_description');
foreach ($products as $product) {
/** @var $product \Mage_Catalog_Model_Product */
echo $product->getName();
echo $product->getDescription();
echo $product->getShortDescription();
}
The first one would take less memory than the second one because it wont hold old information in memory.