Odesílání Content-length u XML dostupnostního feedu Heureka

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Macek
Člen | 3
+
0
-

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.

MW
Člen | 615
+
0
-

A co Content-Length: xxxx ?

David Matějka
Moderator | 6445
+
0
-

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:

  1. 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
  2. generovat ten soubor nejakym cronem a pak ho poskytovat staticky. apache by mel poslat spravnou content length
Michal Hlávka
Člen | 190
+
0
-

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
+
0
-

@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
+
0
-

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.

souki
Bronze Partner | 22
+
0
-

S uložením a posláním hlavičky ručně je problém, že se pak zase musí vypnout GZIP nebo pak ještě ručně řešit variantu pro komprimované a nekomprimované.
Úplně nejlepší by bylo prostě Heuréku natlačit, ať si s tím něco udělá.