[PHP] script door laten runnen als user download afbreekt?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • xelnaha
  • Registratie: November 2008
  • Laatst online: 25-05 00:46
Hai,

Ik zit met het volgende probleem: Ik biedt een ms word document aan ter download aan gebruikers middelds de standaard headers methode.

Nu zie ik alleen dat wanneer een gebruiker de download annulleert, de code die na de headers call staat niet meer uitgevoert wordt.

Is er een manier om de content van een file als download aan te bieden (wellicht als stream?) en daarna code uit te voeren (het verwijderen van de tmp bestanden)? Ook wanneer een gebruiker de download annuleert?

google kon mij niet heel erg goed helpen....

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • mees
  • Registratie: December 2000
  • Laatst online: 06-08 11:13

mees

Duuuussss...

inderdaad ignore_user_abort()
Als je daarna ergens wilt checken of de gebruiker al geannuleerd heeft, kun je dit doen met connection_aborted()

Kijk alleen goed uit of er geen infinite loops voorkomen in je script. Als je geen shell-access hebt zul je het proces niet kunnen killen :)

[ Voor 33% gewijzigd door mees op 19-01-2009 15:28 ]

8 bitterballen = 1 byterbal


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Je zou natuurlijk hiervoor ook middels register_shutdown_function de cleanup kunnen laten doen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • xelnaha
  • Registratie: November 2008
  • Laatst online: 25-05 00:46
Tnx!

Nu heb ik snel ff onderstaande script gemaakt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php>
function shutdown($input)
{
    unlink($input);
}

register_shutdown_function("shutdown", $filename);
  $filename = "../temp/temp.iso";
  header("Pragma: public"); // required
  header("Expires: 0");
  header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  header("Cache-Control: private", FALSE); // required for certain browsers
  header("Content-Type: ");
  header("Content-Disposition: attachment; filename=temp.iso" );
  header("Content-Transfer-Encoding: binary");
  readfile($filename);
?>


Dit werkt alleen niet; indien ik op annuleer klikt wordt de unlink niet uitgevoert. Zonder de headers te gebruiken en alleen de functie call werkt wel.

Wat o wat doe ik verkeerd?

Acties:
  • 0 Henk 'm!

  • Gromba
  • Registratie: Mei 2003
  • Laatst online: 11-09 22:29

Gromba

Tijdreiziger @ 1sec/sec

PHP:
1
2
register_shutdown_function("shutdown", $filename); 
$filename = "../temp/temp.iso";


Misschien omdraaien?

Gromba.nl


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 18:08

CoolGamer

What is it? Dragons?

Uit de handleiding:
Note: Working directory of the script can change inside the shutdown function under some web servers, e.g. Apache.
Zou dit het kunnen zijn?

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • xelnaha
  • Registratie: November 2008
  • Laatst online: 25-05 00:46
edit:

je hebt gelijk. Nu werkt het wel! Tnx all for the help!

[ Voor 69% gewijzigd door xelnaha op 19-01-2009 20:19 ]


Acties:
  • 0 Henk 'm!

  • mees
  • Registratie: December 2000
  • Laatst online: 06-08 11:13

mees

Duuuussss...

Nog een klein tipje er achteraan dan..

Als ik aan het ontwikkelen ben, zet ik de error reporting level altijd op E_ALL. Dat spoort zulke foutjes altijd veel sneller op, aangezien je hier een variabele gebruikt voordat je hem definieert (wat resulteert in een notice)

[ Voor 6% gewijzigd door mees op 20-01-2009 08:49 ]

8 bitterballen = 1 byterbal

Pagina: 1