Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generowanie pliku o określonej długości
Forum PHP.pl > Forum > PHP
KR2615
Witam.
Robię skrypt, który będzie serwował pliki testowe o równych rozmiarach (5, 10, 50, 200MB itp) użuytkownikom, chcącym przetetsowac transfer na mój serwer. Stwierdziłem, że nie ma sensu trzymac ich wszystkich na dysku. Można przecież przygotować je po kliknięciu w linka i wysyłać użytkownikowi. Do tej pory udało mi się stworzyć tylko taki kod:

  1. <?php
  2.  
  3. $size = htmlspecialchars($_GET[size[);
  4.  
  5. if(!is_numeric($size)) {
  6. echo "Rozmiar pliku musi być liczbą!"
  7. die();
  8. } elseif($size > "500") {
  9. echo "Zbyt duży rozmiar pliku!";
  10. die();
  11. } else {
  12.  
  13. <--- Co wpisać tutaj -->
  14. header('Content-Disposition: attachment; filename="test.'. $size .'mb"');
  15. header("Content-Type: application/octet-stream");
  16. }
  17. php?>


Zastanawiam się, <--- Co wpisać tutaj --> tak, żeby serwer generował ciąg znaków o określonej długości (np. 50 mb) z uzyciem /dev/urandom
eccocce
Dużo będziesz miał takich plików? Dużo użytkowników będzie z tego korzystać? Zastanawiam się, czy takie generowanie za każdym razem nowego pliku ma sens, bo to jednak generuje za każdym razem jakieś obciążenie dla serwera. Co jeśli kilkunastu użytkowników w tym samym czasie wywoła test z plikiem 500 MB?
KR2615
Dużo użytkowników nie będzie więc serwer się nie zawiesi, spokojnie. Plików będzie w sumie kilka GB ale na kilku rożnych stronach (vhostach) dlatego powielanie tych danych byłoby bez sensu. A plik chciałbym nazwać "nazwa_vhosta.ilośb_mb" dlatego widzę sens w robieniu skryptu.

Wpdałem na taki pomysł:
Po header(...); dodałem:
  1. system("dd if=/dev/urandom bs=512 count=$count");

a $count podstawiam odpowiednią ilość bloków.

Temat do zamknięcia.
Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.