1q2w3e4r
(1q2w3e4r)
23 Sierpień 2011 18:53
#1
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ć…?
$ch = curl_init($file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_RESUMSE_FROM, $seek_start);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
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');
$result = curl_exec($ch);
$transfer = curl_getinfo($ch, CURLINFO_SIZE_UPLOAD); // całkowita liczba wysłanych bajtów
if(!empty($result))
{
mysql_query("UPDATE `downloads` SET `transfer`='".$transfer."', `finished`='1' WHERE `id`='".$downloads_id."' ") or die (mysql_error());
}
curl_close($ch);
1q2w3e4r
(1q2w3e4r)
24 Sierpień 2011 08:51
#3
Nagłówki nie są mi potrzebne, bo gdy je pobieram to plik zapisuje się jako .php
Tutaj jest przykład:
<?php
//get Zend home page
$curl = curl_init('http://www.zend.com/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_exec($curl);
//dump information about the request
print("CURLINFO_CONNECT_TIME: " .
curl_getinfo($curl, CURLINFO_CONNECT_TIME) .
'
');
print("CURLINFO_CONTENT_LENGTH_DOWNLOAD: " .
curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD) .
'
');
print("CURLINFO_CONTENT_LENGTH_UPLOAD: " .
curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_UPLOAD) .
'
');
print("CURLINFO_CONTENT_TYPE: " .
curl_getinfo($curl, CURLINFO_CONTENT_TYPE) .
'
');
print("CURLINFO_EFFECTIVE_URL: " .
curl_getinfo($curl, CURLINFO_EFFECTIVE_URL) .
'
');
print("CURLINFO_FILETIME: " .
curl_getinfo($curl, CURLINFO_FILETIME) .
'
');
print("CURLINFO_HEADER_SIZE: " .
curl_getinfo($curl, CURLINFO_HEADER_SIZE) .
'
');
print("CURLINFO_HTTP_CODE: " .
curl_getinfo($curl, CURLINFO_HTTP_CODE) .
'
');
print("CURLINFO_NAMELOOKUP_TIME: " .
curl_getinfo($curl, CURLINFO_NAMELOOKUP_TIME) .
'
');
print("CURLINFO_PRETRANSFER_TIME: " .
curl_getinfo($curl, CURLINFO_PRETRANSFER_TIME) .
'
');
print("CURLINFO_REDIRECT_COUNT: " .
curl_getinfo($curl, CURLINFO_REDIRECT_COUNT) .
'
');
print("CURLINFO_REDIRECT_TIME: " .
curl_getinfo($curl, CURLINFO_REDIRECT_TIME) .
'
');
print("CURLINFO_REQUEST_SIZE: " .
curl_getinfo($curl, CURLINFO_REQUEST_SIZE) .
'
');
print("CURLINFO_SIZE_DOWNLOAD: " .
curl_getinfo($curl, CURLINFO_SIZE_DOWNLOAD) .
'
');
print("CURLINFO_SIZE_UPLOAD: " .
curl_getinfo($curl, CURLINFO_SIZE_UPLOAD) .
'
');
print("CURLINFO_SPEED_DOWNLOAD: " .
curl_getinfo($curl, CURLINFO_SPEED_DOWNLOAD) .
'
');
print("CURLINFO_SPEED_UPLOAD: " .
curl_getinfo($curl, CURLINFO_SPEED_UPLOAD) .
'
');
print("CURLINFO_SSL_VERIFYRESULT: " .
curl_getinfo($curl, CURLINFO_SSL_VERIFYRESULT) .
'
');
print("CURLINFO_STARTTRANSFER_TIME: " .
curl_getinfo($curl, CURLINFO_STARTTRANSFER_TIME) .
'
');
print("CURLINFO_TOTAL_TIME: " .
curl_getinfo($curl, CURLINFO_TOTAL_TIME) .
'
');
?>
Który zwraca CURLINFO_SIZE_UPLOAD = 0 ale tutaj jest ok, bo do usera nic nie wysyła tylko pobiera do wyświetlenia na stronie wiec download.
A UPLAOD jest do wysyłania do usera…
no dalej nie wiem jak to rozwiązać.
faust1002
(Juszczyk Pawel)
24 Sierpień 2011 09:40
#4
Sorry, nie do końca zrozumiałem o co Ci chodziło.
Chcesz za pomocą cURL wysłać czy pobrać plik? Trochę zgłupiałem, Twój kod wygląda jakbyś chciał pobierać, a pytasz się o ilość wysłanych bajtów
1q2w3e4r
(1q2w3e4r)
24 Sierpień 2011 13:49
#5
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 B), a upload gdy wysyła z A na mój komputer.
Czyli powinny być oba parametry UPLAOD I DOWNLOAD. Ja tak to rozumiem…
faust1002
(Juszczyk Pawel)
24 Sierpień 2011 18:01
#7
Z serwera B na serwer A pobierasz plik za pomocą cURL, ale już na swój komputer ściągasz go przecież bez cURL. Dlatego w UPLOAD masz zero.