varez 0 Zgłoś post Napisano Czerwiec 2, 2008 przedstawiałem problem na forum 4programmers.net (http://forum.4programmers.net/viewtopic.php?p=463703) ale problem zaczal byc bardziej techniczny niz do programowania wiec opisze co jest: witam, mam prosty skrypcik ktory otwiera mi jakis zewnetrzny plik, po czym podaje mi go od siebie .. cos jakby proxy do pobierania konkretnego pliku: header("Content-type:application/octet-stream"); header("Content-Length: ".$size); header('Content-Disposition: attachment; filename='.$filename); $zal=fopen($path, 'r'); for ($i=1; $i <= $size; $i++) { echo fread($zal, 1); } fclose($zal); tylko ten skrypcik powoduje ze po 30 sekundach przerywa mi sie sciaganie, a do pobieranego pliku dokleja sie error php jak mozna by to ominąc?? tylko zwiekszajac limit do powiedzmy 10 minut?? poradzili mi dodac w petli set_time_limit(30); dodałem, no i teraz problem jest taki ze po losowej liczbie minut skrypt mi padał (na jakims tam zewnetrznym hoście).. podobno to wina pamięci - usługodawca zablokował mi konto z powodu zbyt duzego obciazenia maszyny, az do tego stopnia ze sie scrashowała.. z tym ze u mnie w domu, na Windzie Xp, apache ani megabajta ramu wiecej nie "zjada" przy wykonywaniu tego skryptu.. i wlasnie mi konczy lokalnie sciagac ta metoda 100MB plik.. tylko zuzycie proca stoi na poziomie kolo 100%.. czy ja cos robie nie tak, czy moze apachea maja źle skonfigurowanego?? jesli tak to jak zapobiec temu zjadaniu ramu?? tak jak mowili: flush()em? Udostępnij ten post Link to postu Udostępnij na innych stronach
p 3 Zgłoś post Napisano Czerwiec 2, 2008 ale problem zaczal byc bardziej techniczny niz do programowania wiec opisze co jest:Chyba sobie żartujesz. Jakbym dostał taki kod od jakiegoś programisty to bym go na zbity pysk wywalił Sorry, ale łagodniej się tego nie da napisać... Udostępnij ten post Link to postu Udostępnij na innych stronach
varez 0 Zgłoś post Napisano Czerwiec 2, 2008 dlaczego? moze pomoż rozwiązać? ^^ Udostępnij ten post Link to postu Udostępnij na innych stronach
p 3 Zgłoś post Napisano Czerwiec 2, 2008 dlaczego?Nie używasz zbyt dużej liczby funkcji. Domyśl się. moze pomoż rozwiązać? ^^Może zacznij czytać dokumentację? Udostępnij ten post Link to postu Udostępnij na innych stronach
varez 0 Zgłoś post Napisano Czerwiec 2, 2008 Nie używasz zbyt dużej liczby funkcji. Domyśl się. a to zło jakieś? Może zacznij czytać dokumentację? a czytam, ale jak mnie odnosisz do dokumentacji to napisz do ktorej (apache/php).. poza tym na moim kompie wszystko gra, na moim VPS 400Mhz/256RAM przy wlaczonym serwerze gry, apache 2/php/mysql (90% ram caly czas zajete) daje rady, wiec to raczej wina hosta jest, ale po prostu szukam pomocy, bo widac ze to cos jest nienormalne Udostępnij ten post Link to postu Udostępnij na innych stronach
Tomi 0 Zgłoś post Napisano Czerwiec 2, 2008 Spróbuj użyć CURLa który jest do takich rzeczy po prostu stworzony. Dobrym rozwiązaniem jest też chwilowe pobranie pliku do tymczasowego folderu a potem dopiero jego otwieranie. pyzatym ja bym ustawił set_time_limit(0); Udostępnij ten post Link to postu Udostępnij na innych stronach
p 3 Zgłoś post Napisano Czerwiec 2, 2008 a to zło jakieś?Nigdzie nic takiego nie napisałem. Chodziło mi raczej o fakt, że skoro wykorzystujesz tak naprawdę tylko 3 funkcje, to dużych możliwości popełnienia błędu nie miałeś i powinieneś się sam domyślić co robisz źle... a czytam, ale jak mnie odnosisz do dokumentacji to napisz do ktorej (apache/php)..Skoro już dałem do zrozumienia, że to wina po stronie programistycznej, to chyba nie muszę pisać dużymi literami, do której dokumentacji należy zaglądnąć? poza tym na moim kompie wszystko gra, na moim VPS 400Mhz/256RAM przy wlaczonym serwerze gry, apache 2/php/mysql (90% ram caly czas zajete) daje rady, wiec to raczej wina hosta jest, ale po prostu szukam pomocy, bo widac ze to cos jest nienormalne Nie? A wcześniej pisałeś coś innego: z tym ze u mnie w domu, na Windzie Xp, apache ani megabajta ramu wiecej nie "zjada" przy wykonywaniu tego skryptu.. i wlasnie mi konczy lokalnie sciagac ta metoda 100MB plik.. tylko zuzycie proca stoi na poziomie kolo 100%.. Udostępnij ten post Link to postu Udostępnij na innych stronach
varez 0 Zgłoś post Napisano Czerwiec 3, 2008 jak się ma od 4 lat uszkodzony procesor, który uwielbia zawieszac system, restartowac i robic BSODy to nie takie rzeczy się dzieją wiec tym sie specjalnie nie martwiłem.. ok Panie p - bawimy sie w kotka i myszke czy mi cos podpowiesz? całą dokumentację mam przeczytać? @Tomi - tymczasowy zapis odpada - ma być bez tego za dlugo bym czekał, az serwer pobierze te kilkaset MB nieraz i zacznie wysyłać.. Udostępnij ten post Link to postu Udostępnij na innych stronach
Wojciech Małota 0 Zgłoś post Napisano Czerwiec 3, 2008 Po pierwsze zamiast pętli użyj funkcji readfile. Po drugie jeśli ty ten plik ciągniesz gdzieś z internetu i potem go wysyłasz internaucie do wyszukiwarki to raczej to szybkie nie będzie. Ja bym takiego z hostingu wywalił :-). Jakiś redirectr byłby lepszy ale wtedy skończy się udawanie, że plik leży u Ciebie. Udostępnij ten post Link to postu Udostępnij na innych stronach
GLOBUS 1 Zgłoś post Napisano Czerwiec 3, 2008 Moje testy na pliku ~20MB i 2100MHZ: readfile 2.3911 sec feof + fread(x,1024) 2.4257 sec for + fread(x,1) 26.9816 sec feof + fread(x,1) 31.1507 sec pamięć podskoczyła o kilka MB procesor 100% Udostępnij ten post Link to postu Udostępnij na innych stronach
varez 0 Zgłoś post Napisano Czerwiec 3, 2008 Po pierwsze zamiast pętli użyj funkcji readfile. ok [jezeli tylko filesize nie probuje wczytac całości do pamięci, a dopiero potem wysylac] Po drugie jeśli ty ten plik ciągniesz gdzieś z internetu i potem go wysyłasz internaucie do wyszukiwarki to raczej to szybkie nie będzie. no to chyba od łącza zalezy Ja bym takiego z hostingu wywalił :-). z dedyka nie wywalą Jakiś redirectr byłby lepszy ale wtedy skończy się udawanie, że plik leży u Ciebie. i przy okazji pliki ktore pobieram z uzyciem hasła przestałyby być takie tajne dzięki GLOBUS za te testy przy readfile procek tez jest na 100%? Udostępnij ten post Link to postu Udostępnij na innych stronach
GLOBUS 1 Zgłoś post Napisano Czerwiec 3, 2008 przy readfile kilka - naście% Udostępnij ten post Link to postu Udostępnij na innych stronach
varez 0 Zgłoś post Napisano Czerwiec 3, 2008 nie moge uzyc readfile, bo nie ma jak zrobic wznawiania Udostępnij ten post Link to postu Udostępnij na innych stronach
p 3 Zgłoś post Napisano Czerwiec 3, 2008 bawimy sie w kotka i myszke czy mi cos podpowiesz? całą dokumentację mam przeczytać?Wykorzystujesz trzy funkcje (z czego jedną przez większość czasu).Czy naprawdę tak trudno się domyślić, że chodziło mi o tą dokumentację? Udostępnij ten post Link to postu Udostępnij na innych stronach
varez 0 Zgłoś post Napisano Czerwiec 3, 2008 rozumiem ze mam uzyc file_get_contents ? Udostępnij ten post Link to postu Udostępnij na innych stronach
p 3 Zgłoś post Napisano Czerwiec 3, 2008 rozumiem ze mam uzyc file_get_contents ?Jak chcesz to użyj... Ale chodziło mi bardziej o zamieszczone tam przykłady i komentarze......sprobój znaleść jakiś, który wykona ponad 100 milionów operacji I/O dla 100MB pliku Udostępnij ten post Link to postu Udostępnij na innych stronach
varez 0 Zgłoś post Napisano Czerwiec 3, 2008 a po co mi taki?? Udostępnij ten post Link to postu Udostępnij na innych stronach
p 3 Zgłoś post Napisano Czerwiec 3, 2008 a po co mi taki??No właśnie, po co? Udostępnij ten post Link to postu Udostępnij na innych stronach
varez 0 Zgłoś post Napisano Czerwiec 3, 2008 no przeciez wiem ze skrypt mam zly, dlatego tez pisze oczekujac na pomoc.. doczytalem sie czegos w dokumentacji ,teraz to zrealizuje Udostępnij ten post Link to postu Udostępnij na innych stronach
Noone 19 Zgłoś post Napisano Czerwiec 3, 2008 Poszukaj sobie lepiej konta gdzie będziesz mógł exec() z wget -c wykonać. Udostępnij ten post Link to postu Udostępnij na innych stronach
varez 0 Zgłoś post Napisano Czerwiec 3, 2008 zadnych kont z dostepem do roota narazie Udostępnij ten post Link to postu Udostępnij na innych stronach
lukaschemp 27 Zgłoś post Napisano Czerwiec 4, 2008 Poszukaj sobie lepiej konta gdzie będziesz mógł exec() z wget -c wykonać. Pisał, że to dedyk więc może wykonywac co mu się podoba. Udostępnij ten post Link to postu Udostępnij na innych stronach
Noone 19 Zgłoś post Napisano Czerwiec 4, 2008 Pisał, że to dedyk więc może wykonywac co mu się podoba. "usługodawca zablokował mi konto z powodu zbyt duzego obciazenia maszyny" Wiec raczej nie zadnych kont z dostepem do roota narazie Przecież nie musisz mieć od razu uprawnień roota. Udostępnij ten post Link to postu Udostępnij na innych stronach
varez 0 Zgłoś post Napisano Czerwiec 4, 2008 no ale execa nie ma i tyle, a skrypt juz poprawiłem i hula bez zadnego obciazenia na dedyku będzie, narazie jest na wirtualnym dziekuje za pomoc, pozdrawiam Udostępnij ten post Link to postu Udostępnij na innych stronach