lkNET Posted July 14, 2011 Share Posted July 14, 2011 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 More sharing options...
Malkus Posted July 14, 2011 Share Posted July 14, 2011 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 More sharing options...
lkNET Posted July 14, 2011 Author Share Posted July 14, 2011 Dle poskytovatele hostingu (banan.cz) není problém na jejich straně. Link to comment Share on other sites More sharing options...
spreyeers Posted July 17, 2011 Share Posted July 17, 2011 mám taky problém při větším počtu položek. Pro jistotu sem si spustil kopii na localhostu memory limit nastavil na 1024M, ale stejne to nefunguje... Nějaké řešení? Link to comment Share on other sites More sharing options...
tuk66 Posted July 18, 2011 Share Posted July 18, 2011 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 More sharing options...
spreyeers Posted July 18, 2011 Share Posted July 18, 2011 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 More sharing options...
tuk66 Posted July 20, 2011 Share Posted July 20, 2011 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 More sharing options...
coal Posted July 25, 2011 Share Posted July 25, 2011 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now