Domanda

Ho uno script php per fare aggiornamenti del catalogo dei prezzi e delle scorte. Questo script potrebbe richiedere molto tempo per l'esecuzione, perché ho bisogno di aggiornare intorno 3K SKU.

Il sito è su un hosting condiviso, quindi non tutti i cambiamenti php.ini potrebbe essere possibile.

Ho 3 problemi / domande:

  1. Dovrei arrestato il sito o posso evitarlo?
  2. Se posso evitare di spegnere il server, ho bisogno di conservare un po 'di CPU al fine di permettere alle persone di accedere al sito con decenti volte réponse
  3. Come posso evitare il max_execution_time errore? Esiste una strategia suggerita per rompere il compito in porzioni più piccole?
È stato utile?

Soluzione

Per rispondere alle vostre domande:

  1. Non è necessario spegnere il server di / sito. Non è stato specificato se si dispone di un fornitore o si gestisce il proprio inventario. In entrambi i casi, se un file viene servita ogni giorno a correre con lo script, impostare un cron di eseguire sul "off" ore.

  2. Se si esegue lo script in periodi non di punta, non ci dovrebbe essere un problema.

  3. Se non v'è alcuna possibilità di modificare i file appropriati, si consideri che separa lo script in 2. 1 per gli aggiornamenti di inventario e l'altra per gli aggiornamenti di prezzo.

Si dovrebbe anche avere una rapida corsa attraverso i seguenti collegamenti e realizzare quelle che sono applicabili:

http: // www .gxjansen.com / 101-modi-to-velocità-up-your-Magento-e-commerce-sito / http://www.magentocommerce.com/boards/viewthread/36225/

Nota: 3K prodotti devono essere facilmente gestiti da un ambiente di hosting condiviso. Se si trova il server troppo lento, contattare il proprio fornitore di servizi e chiedere di essere spostati in un altro server.

In bocca al lupo,

SR

Altri suggerimenti

processo di aggiornamento del prodotto di massa gestisce un tempo abbastanza lungo, a causa del modello del prodotto di aggiornamento ($product->save()) spara un sacco di osservatori. Se è possibile aggiungere un po 'di codifica alla prova sceneggiatura aggiungere questa logica indicato di seguito.
1.Accendere processo di indice per "indicizzazione manuale" prima di aggiornare piste, dopo l'aggiornamento ho ripristinare l'indicizzazione automatica:

//swich indexer to "manual update" mode
$pCollection = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach ($pCollection as $process) {
   $process->setMode(Mage_Index_Model_Process::MODE_MANUAL)->save();
}

//Your script starts.
//Here is your codes
//which updates collection of products within the loop.
//foreach($collection as $product){
//   ...
//   $product->save();
//   ...
//} 
//
//End your custom update script.

//swich indexer to "update on save" mode
$pCollection = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach ($pCollection as $process) {
   $process->setMode(Mage_Index_Model_Process::MODE_REAL_TIME)->save();
}

Dopo aver aggiornato con successo tutti i prodotti si dovrebbe ri-index tutti gli indicizzatori tramite pannello di amministrazione di Magento.

2. Se si desidera aggiornare alcuni attributi dei prodotti (ma non gli attributi dello spazio), utilizzare questo codice anche:

Mage::getSingleton('catalog/product_action')
   ->updateAttributes($arrayOfProductIds, array('some_attribute' =>'some_value'), Mage::app()->getStore()->getId());

Due frammenti dato sopra davvero aiutare il vostro script a correre veloce.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top