Logování odeslaných souborů

kral133
Člen | 3
+
0
-

Ahoj,
odesílám větší soubory tímto způsobem:

public function actionDownloadUpdate()
{
    try {
        $path = $this->updateModel->getUpdatePath($this->requestParams['zip']);
    } catch (\Exception $ex) {
        $this->setError($ex);
    }
    $this->sendResponse(new \Nette\Application\Responses\FileResponse($path));
}

dalo by se nějakým způsobem zalogovat kdy bylo odesílání soubor ukončeno (uživatel si ho dostahoval)?
Dalo by se to nějak dělat na úrovni nette/php nebo by to to muselo řešit nějak na úrovni apache?

předem díky moc za nápady :)

Milo
Nette Core | 1283
+
+2
-

Zkus takhle https://forum.nette.org/…iahnut-subor#…, jen misto mazani loguj.

kral133
Člen | 3
+
0
-

@Milo super díky moc :)
Ještě jeden dotaz. Dalo by se nějak zjistit, když to skončí neúspěchem (třeba se stahování zruší)?

Milo
Nette Core | 1283
+
0
-

To jsem nikdy neřešil a popravdě nevím, jak to udělat spolehlivě. Bude v tom IMHO magie s ignore_user_abort(), connection_status() a OB keší, ale jak se to chová pod Apache, CGI nebo FastCGI SAPI přesně nevím. Co jsem zkoušel, ani funkce registrovaná přes register_shutdown_function() se vždy nezavolá.

Jestli už máš v aplikaci databázi, možná ukládat PID procesu při začátku stahování a na konci ho mazat. A PID v tabulce, které už neběží, budou rozbitá stahování.