Když se nepovede file_put_contents()

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

Ahoj,
snažím se vytvořit aplikaci, které má vstup URL adresu a výstup PDF. Dělá to v cyklech. Pro konverzi do PDF používám službu https://www.html2pdfrocket.com/ -jejich api. Nic lepšího jsem nenašel. I tak se ale občas stane, že služba nedokáže stránku do PDF zkonvertovat. V takovém případě bych chtěl zalogovat, která stránka se nepodařila, a pokračovat ostatními.
Myslel jsem, že by to mohlo jít řešit přes try – catch, bohužel to tak nefunguje. Výsledek můžete vidět na obrázku:
err834f4.jpg
(http://www.imgup.cz/…err834f4.jpg)

Nevíte někdo prosím, jak tam omezit dobu vykonávání? Pokud třeba do 30 sec. nedostanu výsledek, jak pokračovat dál bez pádu.

Díky moc

PS: Kdyby někdo věděl o lepší službě na konverzi (nebo i knihovně) tak taky beru. Díky.

iguana007
Člen | 970
+
0
-

Nejlepším řešením je aktuálně pravděpodobně tato knihovna: http://wkhtmltopdf.org/ a tady je k tomu wrapper pro Nette: https://github.com/…/Wkhtmltopdf

CZechBoY
Člen | 3608
+
0
-

Jinak pokud bys chtěl omezit čas na načtení tý externí stránky tak použij curl nebo třeba guzzle a nastav timeout.

greeny
Člen | 405
+
+1
-
$response = file_put_contents('url', FALSE, stream_context_create([
	'http' => [
		// other stuff (headers, method, body, ...)
		'timeout' => 5, // seconds
		'ignore_errors' => TRUE,
	]
]));
Viki
Člen | 6
+
0
-

Povedlo se, díky :)
code.jpg