6
votes

PHP - expose sa propre taille au client (afin que le client sait combien il télécharge)

Mon script PHP émet le contenu d'un fichier .SQL. Après avoir été appelée par une demande postale de mon client Delphi Desktop.

Voici ce qui se passe:

  1. mon client de bureau envoie une demande postale à mon script PHP.
  2. Le script appelle ensuite mysqldump et génère un fichier - xdb_backup.sql
  3. Le script, alors inclure "xdb_backup.sql"; qui l'imprimera et le retournera sur le client de bureau, alors qu'il supprime le fichier SQL.

    Le problème est que la taille du fichier SQL peut varier (pour les tests, j'ai généré un qui est de 6 Mo). J'aimerais que mon client de bureau puisse montrer la progression, mais le script PHP n'expose pas la taille de sa taille. Je n'ai donc aucun progressbar.max valeur à attribuer.

    Comment puis-je faire mon script PHP Laissez le client savoir à quel point il est grand avant que tout ce qui soit dépassé ?

    Remarque: le téléchargement du fichier SQL n'est pas une option, car le script doit le détruire. :)


2 commentaires

La seule façon de voir que cela fait que cela fait une approximation approximative basée sur le nombre de champs de données il y a et à quel point ils ont tendance à être. Mais très intéressant q +1


@ObTo Merci pour le +1 :) - Il s'agit de la réponse était simple cependant. :)


3 Réponses :


10
votes

vous feriez

header("Content-Length: " . $fsize);


0 commentaires

1
votes

Vous devez envoyer un en-tête de longueur de contenu à l'aide de la fonction de l'en-tête . Quelque chose comme ceci:

en-tête ("Longueur de contenu: "FileSize (" Yourfile.SQL "));

Vous voudrez peut-être envoyer le fichier à l'aide de ReadFile au lieu d'inclure.


1 commentaires

Le client connaît donc la taille avant qu'il ne commence à traiter le fichier SQL?



1
votes

Vous pouvez définir l'en-tête de longueur de contenu avec la taille de xdb_backup.sql


0 commentaires