![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 6.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym zrobić pobieranie plików z innych serwerów, mam kilka wątpliwości:
- Mój obecny serwer ma mało pamięci dlatego chce użyć buforowanego zapisu (kod poniżej), czy takie rozwiązanie jest wydajne, może jest jakieś lepsze ? - Gdy plik się pobiera wisi wątek w przeglądarce i dopiero po pobraniu pliku skrypt się odwiesza. Zauważyłem, że jak wyłączę przeglądarkę to plik się dalej pobiera. Czy takie działanie skryptu podczas pobierania dużej ilości plików (używając tego samego skryptu) będzie wydajne ? kiedyś czytałem, że lepiej żeby skrypt działał w tle ale nie wiem jak to się robi, - Chciałbym poniższy skrypt rozbudować o możliwość wznawiania pobierania gdy wystąpi błąd podczas pobierania (max 3 próby). Wiem, że trzeba użyć fseek ale nie za bardzo wiem gdzie i jak w tym kodzie go umieścić.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
ad 1. Co do wydajności to cięższa sprawa - wszystko zależy od ustawień nie tylko PHP ale i serwera, wielkości buforów i prędkości połączenie - im szybsze tym gorzej (szybciej docierają dane i zapychają pamięć) - może kod zamienić na CURL z CURLOPT_WRITEFUNCTION i spróbować z tego - to duże ułatwienie i łatwo można kontrolować pobieranie i zapisywanie pliku.
ad 2. Zapoznaj się z register_shutdown_function oraz ignore_user_abort ich odpowiednia kombinacja powinna pozwolić Ci na odpalenie skryptu w przeglądarce, zwrócenie przez niego wyniku i dalszej pracy. Pamiętaj tylko o zamykaniu sesji - aby sesja nie wisiała. ad 3. Jeśli użyłbyś CURL'a to przy pomocy WRITE_FUNCTION i CURL_GETINFO (z tego co pamiętam) łatwo można wykryć czy plik pobrał się dobrze i zadziałać odpowiednio (IMG:style_emoticons/default/wink.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 13:11 |