Jump to content

Nefunkční XML feed pro Zboží.cz při větším počtu položek


lkNET

Recommended Posts

Zdravím,

máme pro Zboží.cz použitý skript viz níže. Při počtu položek e-shopu do cca 1200 se XML feed vygeneruje v pořádku, při počtu větším skončí generování chybou:

Chyba protokolu HTTP 500 (Internal Server Error): Při pokusu o splnění požadavku došlo na serveru k neočekávané situaci.

<?php
$shopUrl = 'http://www.dvdzalevno.cz';
include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/init.php');
error_reporting(0);
$p=Product::getProducts(4, 0, 0, 'id_product', 'desc', false);
$products=Product::getProductsProperties(4, $p);

header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>
';
foreach ($products as $row) {
$img=Product::getCover($row['id_product']);
echo '

'.str_replace("&", "&", $row['name']).'
'.str_replace("&", "&",strip_tags($row['description_short'])).'
'.$row['link'].'
'.$shopUrl.'/img/p/'.$row['id_product'].'-'.$img['id_image'].'.jpg
'.($row['price']*1).'
'.($row['quantity']*1).'
0
';
}
echo '';
?>


Prestashop je ve verzi 1.4.1.0.

V čem by mohl být problém? Díky předem za rady.

Link to comment
Share on other sites

Zdravím,

máme pro Zboží.cz použitý skript viz níže. Při počtu položek e-shopu do cca 1200 se XML feed vygeneruje v pořádku, při počtu větším skončí generování chybou:

Chyba protokolu HTTP 500 (Internal Server Error): Při pokusu o splnění požadavku došlo na serveru k neočekávané situaci.

<?php
$shopUrl = 'http://www.dvdzalevno.cz';
include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/init.php');
error_reporting(0);
$p=Product::getProducts(4, 0, 0, 'id_product', 'desc', false);
$products=Product::getProductsProperties(4, $p);

header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>
';
foreach ($products as $row) {
$img=Product::getCover($row['id_product']);
echo '

'.str_replace("&", "&", $row['name']).'
'.str_replace("&", "&",strip_tags($row['description_short'])).'
'.$row['link'].'
'.$shopUrl.'/img/p/'.$row['id_product'].'-'.$img['id_image'].'.jpg
'.($row['price']*1).'
'.($row['quantity']*1).'
0
';
}
echo '';
?>


Prestashop je ve verzi 1.4.1.0.

V čem by mohl být problém? Díky předem za rady.


Ahoj, není to omezením hostingu? Jakou máš omezení dobu běhu scriptu a nebo jestli ti nedojde php_memory
Link to comment
Share on other sites

Jsou jen 2 možnosti. Buď někde okolo 1200 produktu je v datech něco, co skript nezvládne - např. nějaký nesmyslný znak.

Za mnohem pravděpodobnější bych považoval obvyklé omezení běhu skriptu na 30 s. Skript 30 s generuje a okolo 1200. položky skončí. Druhá možnost se dá poznat podle toho, že skončí pokaždé jinde. Zkus na řádku

$p=Product::getProducts(4, 0, 0, ‘id_product’, ‘desc’, false);



měnit třetí číslo. Třeba na 1100, pak 1300, pak 1200 ... a neustále se přibližovat z obou stran k pádu. Pokud třeba feed spadne u 1205. produktu a příště se to povede, tak je problém v časovém omezení.

Link to comment
Share on other sites

jenze prave i max_execution_time i post_max_size jsem nekolikanasobne zvedl.

ale nema to cenu pouzivat v realu, protoze mame VPS a takto ho pretezovat znamena, ze jak se dostaneme k limitu, tak se vypne apache. a spadnou nam vsechny domeny.

Link to comment
Share on other sites

Jako jediné řešení vidím odladění kopie shopu na lokálním serveru v nějakém debuggeru. Tak se dá najít přesné místo kolapsu a pak je jen krůček od nalezení řešení. Jako pomalejší alternativa nalezení místa v kódu, kde je problém, se mi osvědčilo vkládání die() příkazů a metoda půlení. To se dá dělat i na běžícím ostrém serveru.

Link to comment
Share on other sites

Jako jediné řešení vidím odladění kopie shopu na lokálním serveru v nějakém debuggeru. Tak se dá najít přesné místo kolapsu a pak je jen krůček od nalezení řešení. Jako pomalejší alternativa nalezení místa v kódu, kde je problém, se mi osvědčilo vkládání die() příkazů a metoda půlení. To se dá dělat i na běžícím ostrém serveru.

Nenene. Měl jsemten stejný problém a je to hostingem. Vymazal jsem generování pro asi pět jinejch serveru takze mi to generuje asi jen 8 xml a zase to zacalo jet.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...