Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Odczyt wielkości pliku podczas jego zapisywania
mdoff
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 19.03.2013

Ostrzeżenie: (0%)
-----


Mam taki problem,
jest skrypt w php który ściąga dość duży plik, jednocześnie chciałbym żeby inny skrypt odczytał ilość pobranych danych do tego pliku.
Jednak kiedy wywołuję w tym drugim skrypcie funkcję filesize() to ona czeka na zamknięcie tego pobieranego pliku i zwraca mi pełny rozmiar pliku (już po jego pobraniu).
Czy jest może jakiś sposób aby ominąć tą blokadę?

Z góry dziękuję za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Przerób skrypt do pobierania tego pliku. Użyj w nim CURL aby pobierać plik.

Do tego dodaj CURLOPT_WRITEFUNCTION do ustawień CURLA. Zrob odpowiednią funkcję i podaj ją jako callback. W tej funkcji będziesz wiedział ile już ściągnęło się danego pliku - tą informację możesz gdzieś zapisywać (plik,baza itp) i odczytywać zupełnie innym skryptem.

To tak w skrócie. Odsyłam do Wujka G. z frazą "CURLOPT_WRITEFUNCTION download progress" itp... Powodzenia (IMG:style_emoticons/default/wink.gif)

EDIT: tak w ogóle to coś robisz źle jeśli filesize() czeka na zakończenie pobierania pliku. Z jakiej funkcji korzystasz do jego zapisu? Może blokujesz dostęp do niego flock() lub coś w tym stylu? Bo to powinno normalnie śmigać...

Ten post edytował Sephirus 20.03.2013, 12:05:48
Go to the top of the page
+Quote Post
mdoff
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 19.03.2013

Ostrzeżenie: (0%)
-----


Cytat(Sephirus @ 20.03.2013, 12:04:11 ) *
Przerób skrypt do pobierania tego pliku. Użyj w nim CURL aby pobierać plik.

Do tego dodaj CURLOPT_WRITEFUNCTION do ustawień CURLA. Zrob odpowiednią funkcję i podaj ją jako callback. W tej funkcji będziesz wiedział ile już ściągnęło się danego pliku - tą informację możesz gdzieś zapisywać (plik,baza itp) i odczytywać zupełnie innym skryptem.

To tak w skrócie. Odsyłam do Wujka G. z frazą "CURLOPT_WRITEFUNCTION download progress" itp... Powodzenia (IMG:style_emoticons/default/wink.gif)

EDIT: tak w ogóle to coś robisz źle jeśli filesize() czeka na zakończenie pobierania pliku. Z jakiej funkcji korzystasz do jego zapisu? Może blokujesz dostęp do niego flock() lub coś w tym stylu? Bo to powinno normalnie śmigać...


Dzięki wielkie, niedługo spróbuję przerobić skrypt, wcześniej plik ściągałem przez fopen/fread/fwrite ale tu chyba faktycznie curl będzie lepszy (IMG:style_emoticons/default/smile.gif)

Niestety ani przerobienie tego na curl'owe zapytanie alni przerobienie skryptu tak:
  1. $file = fopen($video_url, "rb");
  2. flush();
  3. if(!$file)
  4. die();
  5.  
  6. while(!feof($file)) {
  7.  
  8. $wfile = fopen($folder.$Link.,"a+");
  9.  
  10. fwrite($wfile,fread($file, 8192)) ;
  11.  
  12. fclose($wfile);
  13.  
  14. }
  15. fclose($file);

nie pomogły, nadal funkcja filezise czeka aż się plik zakończy

Ten post edytował mdoff 23.03.2013, 14:38:32
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 17:39