Odeslání odpovědi před ukončením skriptu

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

Ahoj,
potřebuji odeslat z presenteru odpověď před ukončením běhu skriptu a jelikož se jedná o Nette, chci se zeptat, jaký je správný postup?
Jsem v klasické akci JSON-RPC presenteru, který vezme požadavek, předá jej serveru (službě), z ní vypadne JSON odpověď, tuto okamžitě potřebuji odeslat a dále se pak zabývat odbavením tohoto požadavku.

Díky za odpovědi

David Matějka
Moderator | 6445
+
-1
-

Mas nekolik moznosti:

pokud pouzivas payload:

$this->payload->foo = "aaa";
$this->sendPayload();

nebo

$this->sendJson(array('foo' => 'bar'));
//coz je zkratka pro
$this->sendResponse(new Nette\Application\Responses\JsonResponse(array('foo' => 'bar')));

timto ukoncis beh presenteru.

Editoval matej21 (26. 8. 2014 12:21)

Ellesmess
Člen | 21
+
0
-

Vím, jak ukončit běh presenteru, potřebuji vědět, jak odeslat odpověď A ZÁROVEŇ dále pokračovat ve skriptu (v principu řeknu – na, tady máš číslo ticketu, zeptej se později a pokračuji ve vykonávání long-running tasku). SendResponse vyhazuje AbortException, kterážto je mi k prdu.

David Matějka
Moderator | 6445
+
0
-

muzes zkusit vyvorit JsonResponse a poslat ji rucne.

ale bojim se, ze ti to nebude fungovat – script bude porad bezet, tudiz klient to uvidi jako neukonceny pozadavek a bude cekat na odpoved. spis bych to resil tak, ze posles normalne response a zpracovavat to budes nekde vedle – treba pomoci fronty a consumeru

Ellesmess
Člen | 21
+
0
-

To je to, cemu se chci vyhnout – opirat to o nejaky dalsi mechanismus, kdyz to neni potreba. Staci jenom odeslat okamzitou odpoved…