konto usunięte

Temat: PHP4 i pobieranie pliku chronione hasłem

Czy ktoś ma działające rozwiązanie tego problemu dla plików binarnych > 2MB ?

Rozwiązania ze strony manuala readfile() oraz z tej poniżej (podobne) nie działają:
http://wordpress.org/support/topic/protected-downloads...

Jaki mam objaw:
- plik jest pobierany, podana jest długość oraz czas do końca pobierania, po czym po jakimś czasie pobieranie się urywa (w różnym punkcie)
- czasami (rzadko) się udaje
- set_time_limit nie pomaga

I jeśli nie PHP to co?

Help!Piotr L. edytował(a) ten post dnia 03.01.12 o godzinie 09:29

konto usunięte

Temat: PHP4 i pobieranie pliku chronione hasłem

Jeśli w logach nic nie zostaje a jesteś pewien, że plik został ze skryptu wysłany (likiś user log po wysłaniu pliku) to może być problem czysto sieciowy.
Kiedyś coś takiego przyrabiałem. Klient przez miesiąc płakał, że coś namieszałem, bo im nie działa a okazało się, że mieli gdzieś w sieci timeout wszystkich idle połączeń po 30 sekundach (a sktrypt mielił megabajty danych przez około 60 sekund i w tym czasie nic nie przesyłał).

Musiałbyś przetestować w innym środowisku i porównać czy wynik jest taki sam czy nie.

konto usunięte

Temat: PHP4 i pobieranie pliku chronione hasłem

W logu jest status pobrania jest 200 i długość... mniejsza niż oczekiwana.

konto usunięte

Temat: PHP4 i pobieranie pliku chronione hasłem

Jak masz polecenie readfile() to czy jak po nim wstawisz jakiś userlog to on się ładnie zapisze, czy skrypt na przykład się wysypał podczas tej operacji (readfile())?

konto usunięte

Temat: PHP4 i pobieranie pliku chronione hasłem

Sprawdzę to, aktualnie po readfile lub jego zastępcy mam die().

Edit: Skrypt przestaje działać w trakcie readfile(), logi po tej instrukcji już nie są aktualizowane.

Edit2: po testach z zastępnikiem readfile() wygląda na to że set_time_limit jest ignorowane i skrypt "po cichu" jest zamykany po upływie określonego czasu. A że hosting raczej ubogi więc php.ini, ani htaccess nie da rady zmienić.

Zna ktoś może jakieś komponenty typu AJAX, które pobierają plik partiami?Piotr L. edytował(a) ten post dnia 03.01.12 o godzinie 22:14
Jarosław Czub

Jarosław Czub FullStack Developer

Temat: PHP4 i pobieranie pliku chronione hasłem

Piotr L.:
Edit2: po testach z zastępnikiem readfile() wygląda na to że set_time_limit jest ignorowane i skrypt "po cichu" jest zamykany po upływie określonego czasu. A że hosting raczej ubogi więc php.ini, ani htaccess nie da rady zmienić.

Czyli wygląda że siada na max_input_time.

Co do pobierania partiami w ajaxie, hymm to może być ciężko coś wymyślić
bo z założeń bezpieczeństwa skrypt JS nie może mieć dostępu do filesystemu.

Prędzej spróbuj znaleźć coś na flashu kiedyś wydziałem uploadery w tej technologii, albo uploader oparty na aplecie javy.Jarosław Czub edytował(a) ten post dnia 04.01.12 o godzinie 02:32

konto usunięte

Temat: PHP4 i pobieranie pliku chronione hasłem

Piotr pisze o pobieraniu pliku z serwera a nie o ładowaniu na serwer.

Piszesz, że sprawdzałeś sposób z czytaniem pliku fragmentami. Jesteś w stanie określić, w którym miejscu skrypt się dokładnie wysypał? Masz w ogóle dostęp do logów serwera?

Pomysł z flashem może nie być taki zły. Tylko raczej trzeba by pisać samemu taki komponent. Pobiera plik po kawałku (z przesuwanym za każdym razem offsetem) a potem daje do zapisu jak już ma wszystko. Mały overkill ale może zadziałać :)
AJAX-em raczej tego nie zrobić bo JS nie ma dostępu do filesystemu i nie zapisze pliku.

konto usunięte

Temat: PHP4 i pobieranie pliku chronione hasłem

Wysypuje mi się w pętli czytającej, wygląda to tak:
- w nowej funkcji readfile-2 w pętli czyta kilka kawałków pliku i je wysyła
- przy którymś z kawałków skrypt "przystaje"
- prawdopodobnie wtedy serwer faktycznie zaczyna wypychanie do klienta
- jeśli zdąrzy zrobić "wypychanie" przed czasem to jest OK
- inaczej - w trakcie tego "wypychania" skrypt jest "killowany"
- time limit jest ustawiony na 90s, skrypt killowany jest po ok. 120s
- stan buforowania nie ma znaczenia - jest tak samo przy buforowaniu i
bez niego

AJAX-em by się pewnie dało - takie gdybanie, ale przecież:
- JS może mieć dostęp do filesystemu (patrz TiddlyWiki - opis) - po potwierdzeniu
przez użytkownika
- AJAX-em mogę pobrać kawałki pliku przy pomocy skryptu PHP obsługującym serwis

Skrypt pobierający (ale chyba to raczej Java niż JavaScript) jest
wykorzystany np. na stronie IBM.com, ale to niestety nie jest Open Source.Piotr L. edytował(a) ten post dnia 04.01.12 o godzinie 10:20

konto usunięte

Temat: PHP4 i pobieranie pliku chronione hasłem

Tylko z takim rozwiązaiem będzie troszkę zabawy.
Mnie to wygląda na jakiś problem bardziej konfiguracyjny - albo samego php albo serwera www (apache-a czy co tam jest).
Możesz jeszcze sprawdzić limity pamięci i zużycie - logować po każdym odczycie i wysłaniu isprawdzić czy nie wysypuje się zawsze przy tych samych wartościach.

Następna dyskusja:

Pobieranie danych pogodowyc...




Wyślij zaproszenie do