Odesílání Content-length u XML dostupnostního feedu Heureka
- David Macek
- Člen | 3
Pěkný den,
pokouším se zprovoznit dostupnostní feed pro Heureku, ale hlásí mi to
chybu:
Nepodařilo se zjistit velikost feedu z HTTP hlaviček
V latte vykresluji šablonu xml souboru s určením contentType na začátku:
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
<item_list>
{foreach $items as $item}
{var $price=$presenter->getPrice($item)}
<item id="{$item->id}">
<stock_quantity>{$item->stockamount}</stock_quantity>
<delivery_time orderDeadline="{$deadline}">{$deliverydate}</delivery_time>
<depot id="67771">
<stock_quantity>{$item->stockamount}</stock_quantity>
</depot>
</item>
{/foreach}
</item_list>`
Nevím, zda něco dělám špatně v Nette nebo jestli je třeba ještě nějak přenastavit Apache.
- David Matějka
- Moderator | 6445
Tu chybu to hlasi pouze ve validatoru, nebo uz si to xml klasicky pridal? Dle jejich doc to skoro vypada, jako by to bylo jen pro validator
Před validací XML souboru je pro nás z technických důvodů nutné, znát před zahájením stahování jeho velikost. Z tohoto důvodu je nutné, aby server při http požadavku vracel v odpovědi hlavičku Content-Length s odpovídající hodnotou.
takze tam by sel pouzit workaround, ze ten soubor rucne ulozis na server, aby se serviroval staticky.
Pokud to ale je vyzadovano i pro bezny beh, tak je to trochu komplikovanejsi. Content-length udava velikost souboru – coz je tezke zjistit pri dynamickem generovani. takze mas asi 2 moznosti moznosti:
- pouzit output buffer a pote poslat spravnou content-length. to muze byt problem, pokud by ten soubor byl hodne velky. pokud je to ale v radu stovek polozek, tak je to asi ok
- generovat ten soubor nejakym cronem a pak ho poskytovat staticky. apache by mel poslat spravnou content length
- Michal Hlávka
- Člen | 190
Nejefektivnějším řešením je, generovat ten soubor jednou denně a mít ho fyzicky na serveru. v HTTP hlavičce se ti už objeví Content-Length sám a nemusíš ho definovat.
- David Matějka
- Moderator | 6445
@emptywall
XML soubor s informacemi o dostupnosti se stahuje každých deset minut a je nutné, aby vždy obsahoval aktuální a pravdivé údaje a splňoval následující specifika
takze jednou denne nestaci :)
- Michal Hlávka
- Člen | 190
David Matějka napsal(a):
@emptywall
XML soubor s informacemi o dostupnosti se stahuje každých deset minut a je nutné, aby vždy obsahoval aktuální a pravdivé údaje a splňoval následující specifika
takze jednou denne nestaci :)
Missed.