2011-12-20 2 views
1

J'ai besoin d'obtenir l'utilisateur télécharger un fichier (par exemple, PDF). Quel sera plus:Le téléchargement de fichier via PHP ou via un lien direct est-il plus rapide?

  • envoyer ce fichier par PHP (avec les en-têtes spécifiques),
  • ou le mettre dans http dossier public et obtenir le lien utilisateur du public pour le télécharger (sans l'aide de PHP)?

Dans le 1er cas, le fichier d'origine peut être dans une zone privée. Mais je pense qu'il faudra du temps pour envoyer ce fichier par PHP.

Alors, comment puis-je mesurer PHP passé du temps à l'envoi de fichiers et combien de mémoire il peut consommer?

P.S. dans le 1er cas, quand PHP envoie les en-têtes et le navigateur (si le plugin pdf est installé) va essayer de l'ouvrir dans le navigateur, PHP fonctionne-t-il encore, ou il sort tout le fichier après les en-têtes envoyés immédiatement? Ou si le plugin n'est pas installé et le navigateur affiche "save as" dialogue PHP fonctionne toujours?

+2

Le temps passé par PHP pour l'un ou l'autre est négligeable. Ce qui fera la différence, c'est votre connectivité réseau et celle du client. En d'autres termes: vous n'avez pas à mesurer le temps. Juste mettre en œuvre une solution. – Gordon

+0

dans le cas où PHP va envoyer un fichier, et l'utilisateur va regarder "Enregistrer sous" dialogue et décider quoi faire, PHP attendra réponse de l'utilisateur? la mémoire sera utilisée? jusqu'à ce que l'utilisateur décide de cliquer sur sauvegarder ou annuler, n'est-ce pas? – user1016265

Répondre

2

Il y aura très peu si vous êtes préoccupé par les vitesses de téléchargement. Je suppose que cela dépend de la taille de vos fichiers, du nombre de téléchargements que vous prévoyez d'obtenir, et si vos documents doivent être accessibles au public, la vitesse de téléchargement du client.

+0

la principale préoccupation ici est l'utilisation de la mémoire. Je pense qu'Apache mangera moins de mémoire qu'Apache + PHP. Il semble que PHP gardera la mémoire dépensée même si l'utilisateur va penser à quoi faire dans la boîte de dialogue "Enregistrer sous". Qu'est-ce que tu penses ? – user1016265

+0

oui, php pourrait utiliser plus de mémoire. Servir le fichier comme un fichier statique, je pense personnellement sera le plus bénéfique et le plus facile à mettre en œuvre. –

1

Votre principal problème avec PHP est la mémoire qu'il consomme - chaque lien va créer un nouveau processus, ce qui serait peut-être 8M - 20M en fonction de ce que votre script fait, si vous utilisez un cadre, etc.

Sur intérêt, j'ai écrit une application symfony pour offrir des téléchargements, et pour faire des choses comme limiter la concurrence, limiter la bande passante, etc. C'est here si vous êtes intéressé à jeter un oeil sur le code. (Je n'ai pas de licence en soi, mais je suis heureux de le faire en GPL3 si vous voulez).

+0

c'est ma préoccupation ici. Que se passerait-il si des personnes de 1K essayaient d'ouvrir leur propre fichier? Dans le cas où les fichiers seront envoyés par Apache seul, il semble que les dépenses en mémoire seront moindres. – user1016265

+0

Correct. En général, vous ne devriez utiliser un processus scripté que si vous voulez faire quelque chose de fantaisie comme la limitation de la concurrence (et même cela peut être fait par Apache, si vous utilisez les bons modules optionnels). Si vous voulez juste offrir une sécurité basée sur un mot de passe/session, vous pouvez créer des structures de répertoires inaccessibles (incluant peut-être un hachage) et créer un lien symbolique depuis l'intérieur de cette structure vers le vrai fichier en dehors de l'arborescence Web. Un travail cron peut être utilisé pour supprimer les dossiers expirés. – halfer

+0

Remarque: si votre processus PHP prend 16M, alors 1000 utilisateurs simultanés prendraient environ 16G de RAM - ce qui est bien si vous avez votre propre serveur. Mais, bien sûr, vous pouvez limiter votre système pour refuser des demandes à des utilisateurs excessifs pendant les périodes occupées. Enfin, il vaut la peine de faire quelques recherches pour voir quels niveaux de demandes vous pourriez raisonnablement obtenir: la plupart des projections de la popularité du site sont surestimées, imo. – halfer

Questions connexes