Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: CURL: problem ze zwracaniem curl_getinfo() po wykonaniu pliku
Forum PHP.pl > Forum > PHP
1q2w3e4r
Witam,
Potrzebuje dostać Info o całkowitej liczbie pobranych bajtów na końcu wykonania tego skryptu i dopiero wtedy edytować rekord w bazie.
Aktualnie działa to tak, że rekord w bazie aktualizuje się zaraz po załadowaniu kodu i zmienna $transfer nic nie zwraca.. Jak to zrobić..?
  1. $ch = curl_init($file);
  2. curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
  3. curl_setopt($ch, CURLOPT_RESUMSE_FROM, $seek_start);
  4. curl_setopt($ch, CURLOPT_NOBODY, false);
  5. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  6. curl_setopt($ch, CURLOPT_HEADER, 0);
  7. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
  8. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
  9. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30');
  10. $result = curl_exec($ch);
  11. $transfer = curl_getinfo($ch, CURLINFO_SIZE_UPLOAD); // całkowita liczba wysłanych bajtów
  12.  
  13. if(!empty($result))
  14. {
  15. mysql_query("UPDATE `downloads` SET `transfer`='".$transfer."', `finished`='1' WHERE `id`='".$downloads_id."' ") or die (mysql_error());
  16. }
  17.  
  18. curl_close($ch);
mortus
Dziwi mnie, że w $transfer nic nie ma. Zrób var_dump($transfer) w linii 12. Możesz też podejrzeć zmienną $result, aby sprawdzić, czy jest w niej to, czego oczekujesz.
1q2w3e4r
W $transfer jest 0, nie jest pusta. Plik pobieram z innego serwisu przez mój serwer.
Zależy mi na tym aby rekord zaktualizował się w bazie na końcu wykonywania skryptu, a tak nie jest..
cycofiasz
Przecież ten skrypt pobiera plik i wyświetla go w przeglądarce a nie uploaduje niczego. Daj więc CURLINFO_SIZE_DOWNLOAD zamiast CURLINFO_SIZE_UPLOAD
1q2w3e4r
Skrypt dostaje link do zewnętrznego pliku który znajduje się na innym serwerze B.
Ja pobieram ten plik do siebie na komputer przez mój serwer A.

Aby pobrać plik przez mój serwer A. Musze najpierw pobierać go z B do A i dopiero wtedy wysyłać do siebie na komputer. Czyli jest download (gdy pobiera z cool.gif, a upload gdy wysyła z A na mój komputer.

Czyli powinny być oba parametry UPLAOD I DOWNLOAD. Ja tak to rozumiem..
cycofiasz
Źle rozumiesz, curl wykonuje tylko download w tym skrypcie a php wysyła zawartość pliku do przeglądarki. Wstaw więc CURLINFO_SIZE_DOWNLOAD i jak chesz to sobie go mnóż przez 2.
1q2w3e4r
Hmm, no ok. To jak teraz zrobić, aby ta wartość wykonała się dopiero po pobraniu?
cycofiasz
Nie rozumiem sformułowania "wartość wykonała się"
1q2w3e4r
Sorry, miało być:
To jak teraz zrobić, aby ta zawartość wykonała się dopiero po pobraniu? (to była odpowiedź na Twoja odpowiedź).
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.