Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sprawdzanie czy dany plik/strona istnieje
alex011251
post 23.05.2013, 22:15:41
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


Mam na forum przykladowo link do flasha, grafiki itp ktore ma sie wyswietlac w poscie
Jak sprawdzic czy np dana grafika swf,url istnieje?
W przypadku grafiki na poczatku rozwiazalem to jak nizej. Ale problem jest taki iz pobiera mi cala grafike po czym sprawdza czy istnieje a przy wiekszej aplikacji nie mozna sobie pozwolic na tracenie zasobow
Gdyby byla mozliwosc rozpoznac po 1bajcie to juz by bylo super. Na poczatku myslalem by zrobic to jakos naglowkami. Ale je sie da zmodyfikowac . Pomyslow juz mi brak

  1. <?php
  2. $external_link = 'http://ks3291483.kimsufi.com/allegro/szablon2/images/banner2.jpg';
  3. if (@GetImageSize($external_link)) {
  4. echo '<img src="'.$external_link.'" />';
  5. } else {
  6. echo "nic tam nie ma :(";
  7. }
  8.  
  9.  
  10. ?>
  11.  
  12.  

Go to the top of the page
+Quote Post
StrefaPi
post 24.05.2013, 00:18:14
Post #2





Grupa: Zarejestrowani
Postów: 232
Pomógł: 50
Dołączył: 2.03.2013

Ostrzeżenie: (0%)
-----


inaczej niż nagłówkiem nie sprawdzisz
  1. $url = "http://ks3291483.kimsufi.com/allegro/szablon2/images/banner2.jpg";
  2.  
  3. $handle = curl_init($url);
  4. curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  5. curl_setopt($handle, CURLOPT_NOBODY, true);
  6. curl_exec($handle);
  7.  
  8. $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
  9. if($httpCode == 200) {
  10. echo("<img src=\"".$external_link."\" />");
  11. }
  12. else {
  13. echo("nic tam nie ma :(");
  14. }
  15.  
  16. curl_close($handle);


Ten post edytował StrefaPi 24.05.2013, 00:23:14


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
alegorn
post 24.05.2013, 08:00:14
Post #3





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


duplikujesz posty.
odpisalem ci we wczesniejszym

StrefaPi:: do sprawdzania naglowkow jest osobna funkcja get_headers, nie ma potrzeby cURL'a zaprzęgać.

j.

Ten post edytował alegorn 24.05.2013, 08:02:13
Go to the top of the page
+Quote Post
alex011251
post 24.05.2013, 08:28:27
Post #4





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


Wlasnie zalozylem ten post bo tamten ma teraz mniej wspolnego z obecnym smile.gif A ty bardziej tamten miesza tylko w forum..

Nie ma sensu zaprzegac curla?

Ja jestem za to zdanie iz jest sens.

Get_headers wystarczy spreparowac naglowek i po ptokach. OpenImageSize pobiera caly obrazek i nie sprawdzi mi np obiektu flash.
Najlepszym chyba rozwiazaniem jest wlasnie CURL
Go to the top of the page
+Quote Post
StrefaPi
post 24.05.2013, 09:03:02
Post #5





Grupa: Zarejestrowani
Postów: 232
Pomógł: 50
Dołączył: 2.03.2013

Ostrzeżenie: (0%)
-----


podobno curl jest szybszy :P


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
alegorn
post 24.05.2013, 09:54:15
Post #6





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


w get_headers spreparujesz nagłówki powiadasz...
i odwołanie się do tych samych nagłówków przez cURL jest na to lekarstwem... ?
nie skomentuje..


co do prędkości - musiałbym sprawdzić, zresztą to tez zależy od ustawień cURL'a bo tam możesz wysterować czas oczekiwania, jak i automatyczne przejście do przekierowania... czyli innego adresu.
oczywiście, to zależy od konfiguracji biblioteki.. czyli czegoś na co nie zawsze mamy wpływ..

zresztą.. jak się uprzeć, to przecież można i jeszcze dziesięć innych sposobów wymyślić...

edit:: to już nie należało do tego tematu

Ten post edytował alegorn 24.05.2013, 10:15:29
Go to the top of the page
+Quote Post
StrefaPi
post 24.05.2013, 10:12:36
Post #7





Grupa: Zarejestrowani
Postów: 232
Pomógł: 50
Dołączył: 2.03.2013

Ostrzeżenie: (0%)
-----


z tego co czytałem w kilku miejscach (przy standardowej konfiguracji) podobno curl jest "prawie" 2 razy szybszy i zużywający minimalnie mniej pamięci... /ale sam tego nie sprawdziłem/

alegorn ma rację i nie ma rady na preparowanie nagłówka

Ten post edytował StrefaPi 24.05.2013, 10:14:20


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
alex011251
post 24.05.2013, 10:15:38
Post #8





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----




chodzilo mi tylko by zabezpieczyc sie przed tym co wam wyskoczylo.
Do tego jes potrzebny filtr przed i filtr w czasie rzeczywistym.
Cos szybkiego i co najwazniejsze co nie pozera zasobow.

Ten post edytował alex011251 24.05.2013, 10:35:54
Go to the top of the page
+Quote Post
StrefaPi
post 24.05.2013, 10:18:34
Post #9





Grupa: Zarejestrowani
Postów: 232
Pomógł: 50
Dołączył: 2.03.2013

Ostrzeżenie: (0%)
-----


otrzymałeś rozwiązanie... czy to taką funkcją czy inną - sprawdź które działa bardziej ekonomicznie, i tyle...

Ten post edytował StrefaPi 24.05.2013, 10:20:34


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
alex011251
post 24.05.2013, 10:20:10
Post #10





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


Ja jestem za curlem smile.gif Bo tak patrze porownujac na serwie jest od headers szybszy.
Go to the top of the page
+Quote Post
zegarek84
post 24.05.2013, 13:52:22
Post #11





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


tak na prawdę przy sekwencyjnym sprawdzaniu plików różnicy między curl'em a tą funkcją niemal nie będzie... różnica pojawi się dopiero przy prawidłowym skorzystaniu z curl_multi lub z surowych socketów (co było by trudniejsze) odpytując je asynchronicznie pisząc skrypt zdarzeniowo... dodatkowo warto mieć zapamiętane połączenie jeśli ponawiamy zapytanie z tym samym serwerem...

dodatkowo chciałbym nadmienić, iż obudowując odpowiednio curl_multi w klasę, pisząc zdarzeniową obsługę jego nie musimy znać na starcie liczby połączeń i w między czasie co odpowiedź możemy wykonywać inny fragment kodu... swoją drogą jak to się dobrze napisało to aż dziw był jak pewnej osobie skrypt bez przydzielania większych zasobów i uciekania do crona w jednym zapytaniu skrypt był wstanie zalogować się na ponad 500 forach, pobrać wymagane dane a następnie dodać temat w odpowiednim dziale (w sumie 3 zapytania HTTP co daje łącznie ponad 1500 zapytań ;D)


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
alex011251
post 25.05.2013, 14:43:22
Post #12





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


Wlasnie zastanawia mnie zasobozernosc smile.gif Bo jezeli mam forum i go przeglada kilkaset osob i badz konkretny post i na nim dodane pare grafik ktore sa wyswietlane po wykonaniu curl badz get_headers czy to mi nie przymuli serwera. Bo to za kazdym razem musi sprawdzac czy grafika jest czy nie


Czy taie cos jes dobre? dopiero przestawiam sie na oop
  1. class classSecurityBasicAuth {
  2. public function __construct($url,$komunikat) {
  3. $handle = curl_init($url);
  4. curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  5. curl_setopt($handle, CURLOPT_NOBODY, true);
  6. curl_exec($handle);
  7.  
  8. $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
  9. if($httpCode == 200) {
  10. echo("<img src=\"".$url."\" />");
  11. }
  12. else {
  13. echo("$komunikat");
  14. }
  15.  
  16. curl_close();
  17.  
  18. }}
Go to the top of the page
+Quote Post
StrefaPi
post 25.05.2013, 17:35:19
Post #13





Grupa: Zarejestrowani
Postów: 232
Pomógł: 50
Dołączył: 2.03.2013

Ostrzeżenie: (0%)
-----


przetestuj :P

/ogólnie przy zwykłym wywołaniu przyśpieszenie z curla też jest, oczywiście nie takie jak w multi, ale moim zdaniem zauważalne/


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
alex011251
post 25.05.2013, 18:03:41
Post #14





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


To wczesniejsza wersja ^^ Ogolnie to ten temat w OOP to nawet nie tyczy sie do konca tej klsy. Ale ogolnego programowawania w OOP

Przetestowalem dodajac 30obrazkow wadliwych.
Poradzilo sobie po 3s wiec szczerze mowiac przy takiej funkcji to nawet dobrze wyszlo smile.gif Liczac ze standardowo na forum nawet zawyzajac srednia to chyba po wylwolaniu strony moze jest dodawanych z 5obrazkow czasem wiecej smile.gif A do tego malo kto doklada jakis wadliwy. Wiec jestem jak najbardziej zadowolony z funkcji curl smile.gif
Ale tylko pytanko czy calosc tego kodu co mi podeslales jest potrzebna. Czy czest nie jest zbedna smile.gif

Ten post edytował alex011251 25.05.2013, 18:04:43
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 06:47