Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: md5 dużego pliku na serwerze
Forum PHP.pl > Forum > PHP
atay
mam pliki na serwerze po ok. 10 MB. Traktuję je jak kopie zapasowe i co tydzień wgrywam ich nowe wersje. Dlatego też postanowiłem napisać sobie skrypt, który będzie obliczał mi ich md5, na dysku mam już program, który to robi. Za kodowanie odpowiada kod:
[php:1:c741fb322b]<?php
$plik=fopen($koduj, "r");
echo "Plik: <b>$koduj</b>: ".md5(fread($plik, filesize($koduj)));
?>[/php:1:c741fb322b]
I to się przy małych plikach sprawdza, ale już przy pliku 10 MB dostaję komunikat w ciągu sekudny od wysłania zapytania "połączenie zostało przerwane" od przeglądarki, a skrypt nie pokazuje nowej strony. Czy jest na to jakiś sposób ?
daniel111
Ja na Twoim miejscu spróbowałbym pętli. Nie wiem ile Twój plik ma linijek, ale załóżmy ma ich 100 000. To nie wykonuję tej funkcji od razu dla całego tekstu, tylko dla tekstu powiedzmy co 100 linijek.
MaKARON
Wykonaj zewnetrzne polecenie md5sum - bez otwierania pliku w php - zwroci Ci sume dla okreslonego pliku, wyluskaj ja tylko ze zwrotu i gotowe.
Bakus
Atay'owi chodzi o szyfrowanie całego pliku, a nie jest sumę kontrolną...
Pomysł z pętlą jest lepszy (mniejsze pożeranie pamięci), ale proponowałbym jeszcze zmiane:
zamiast:
[php:1:319a661e40]<?php
$plik=fopen($koduj, "r");
?>[/php:1:319a661e40]
wstawiłbym:
[php:1:319a661e40]<?php
$plik=fopen($koduj, "rb");
?>[/php:1:319a661e40]

Na wypadek, gdyby skrypt znalazł się pod windą i był binarny...
Nigdy nie wiadomo co provaiderom wpadnie do głowy smile.gif
spenalzo
Cytat
Atay'owi chodzi o szyfrowanie całego pliku, a nie jest sumę kontrolną...

Hm? rolleyes.gif
Po co szyfrować plik czymś, czego nie można odszyfrować?
harek
Cytat
Hm? rolleyes.gif
Po co szyfrować plik czymś, czego nie można odszyfrować?

Dokładnie :/ też nie kumam po co ?
DeyV
oj ludzie ludzie...
Cytat
md5_file
(php 4 >= 4.2.0)
[manual:9e5df29714]md5_file[/manual:9e5df29714] -- Calculates the md5 hash of a given filename
string md5_file ( string filename [, bool raw_output])
atay
moze byc i suma kontrolna, bo przeciez o to mi chodzi. Tylko chce odczytac ta sume na dysku (mam program do czytania md5 pliku pod winde) i jednoczesnie na serwerze.

add#: dzieki makaraon, zrobiłem Twoim sposobem i działa perfekcyjnie, o to mi chodziło smile.gif, pozdrówka !
Bakus
Namieszałeś atay...
Trzeba było najpierw poszukać w manualu i potestować, a nie ... zresztą nieważne smile.gif

P.S. Nie 'makaraon' a 'MaKARON' - nie przepadam za przekręcaniem ksywek... denerwuje mnie to... niedbałość o szczegóły jest kłopotem wielu początkujących programistów...
spenalzo
Bakus - nabijaniu postów na tym forum mówimy stanowczo NIE. :!:
b3
Cytat
md5_file
(php 4 >= 4.2.0)
[manual:d74a2884f8]md5_file[/manual:d74a2884f8] -- Calculates the md5 hash of a given filename
string md5_file ( string filename [, bool raw_output])


czytaj manuala winksmiley.jpg czasem hehe... smile.gif bo w manualu ejst wszystko !!
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.