konto usunięte

Temat: file_exists(URL) vs file_exists(PATH) ?

file_exists(URL) vs file_exists(PATH) ?

Czy zdarza Wam się popełnić taki błąd, że przy sprawdzaniu czy plik istnieje na dysku podajecie zamiast ścieżki na dysku adres URL? albo odwrotnie tam gdzie ma być dostęp przez URL (dla użytkownika) podajecie ścieżkę do pliku na dysku lokalnym serwera?
Michał Ławicki

Michał Ławicki dostawca zadowolenia

Temat: file_exists(URL) vs file_exists(PATH) ?

nie :-)

konto usunięte

Temat: file_exists(URL) vs file_exists(PATH) ?

Nie, głównie dlatego, że zamiast file_exists używam is_file (lub is_dir).

konto usunięte

Temat: file_exists(URL) vs file_exists(PATH) ?

Michał Wachowski:
Nie, głównie dlatego, że zamiast file_exists używam is_file (lub is_dir).

Zmierz sobie czas wykonania jednego i drugiego (szczególnie, jeśli mowa o autoloaderze), to zmienisz nawyki ;]

// mówię oczywiście o file_exists vs is_fileŁukasz Karpuć edytował(a) ten post dnia 14.12.10 o godzinie 18:11

konto usunięte

Temat: file_exists(URL) vs file_exists(PATH) ?

Zmierzyłem.
I dlatego używam is_file.

I nie w autoloaderze, a w generatorze miniatur.Michał Wachowski edytował(a) ten post dnia 14.12.10 o godzinie 18:11

konto usunięte

Temat: file_exists(URL) vs file_exists(PATH) ?

Na windowsie, czy linuksie?

konto usunięte

Temat: file_exists(URL) vs file_exists(PATH) ?

I tu i tu.
Teoretycznie, obie funkcje powinny działać z podobną prędkością - w końcu korzystają ze stat(), ale... wyszło że is_file(), działa szybciej (minimalnie, ale zawsze coś).

Może to się tyczy tego, że is_file() sprawdza czy istnieje i czy jest plikiem / symlinkiem do pliku, a nie czy jest też katalogiem / symlinkiem do katalogu.. ale to takie gdybanie z mojej strony.

Zresztą - odczuwalna różnica, jest dopiero wtedy gdy nie używamy clearstatcache().

BTW. po co w autoloaderze file_exists()? Przecież ważne jest czy istnieje plik w podanej ścieżce. Jak ktoś ci zapoda katalog o nazwie pliku klasy to się zdziwisz :D

Aż sobie powtórzyłem test (10000 iteracji per metoda):
Winda (maszyna stacjonarna):

Plik istnieje, clearstatcache() po kazdej iteracji
file_exists(): 1.3320s
is_file(): 1.3752s

Plik nie istnieje, clearstatcache() po kazdej iteracji
file_exists(): 1.2330s
is_file(): 1.2322s

Plik istnieje, bez clearstatcache() po kazdej iteracji
file_exists(): 1.3667s
is_file(): 1.3481s

Plik nie istnieje, bez clearstatcache() po kazdej iteracji
file_exists(): 1.2236s
is_file(): 1.2247s

Linuch (serwer, gdzieś tam w polsce):

Plik istnieje, clearstatcache() po kazdej iteracji
file_exists(): 0.1055s
is_file(): 0.1053s

Plik nie istnieje, clearstatcache() po kazdej iteracji
file_exists(): 0.1020s
is_file(): 0.1020s

Plik istnieje, bez clearstatcache() po kazdej iteracji
file_exists(): 0.1043s
is_file(): 0.1041s

Plik nie istnieje, bez clearstatcache() po kazdej iteracji
file_exists(): 0.1020s
is_file(): 0.1016s

Z testu winika, że mam wolny komputer a nawyk może zostać :DMichał Wachowski edytował(a) ten post dnia 14.12.10 o godzinie 19:08

konto usunięte

Temat: file_exists(URL) vs file_exists(PATH) ?

Michał Wachowski:
BTW. po co w autoloaderze file_exists()? Przecież ważne jest czy istnieje plik w podanej ścieżce. Jak ktoś ci zapoda katalog o nazwie pliku klasy to się zdziwisz :D

To będzie jego problem, jeśli klasa się nie wczyta.

Wyniki u mnie były dramatyczne dla is_file(). Ale to było dawno.. nie wiem wobec Twoich testów dlaczego, hmm.

konto usunięte

Temat: file_exists(URL) vs file_exists(PATH) ?

Michał Wachowski:
is_file() sprawdza czy istnieje i czy jest plikiem

No trochę inne zastosowanie jest is_file().

W niektórych systemach pliki się linkuje, żeby nie powielać, albo żeby nie uzależniać kodu od miejsca składowania danych (plików) dlatego z przenośnością też może być tu różnie. Jak chodzi jedynie o sprawdzenie czy istnieje plik to się może nie nadać (zwłaszcza jak stwierdzisz, że pliki na przykład przerzucisz na inny serwer z podmontowaną partycją a tam gdzie były wstawisz jedynie linki (wtedy ingerencja w kod), albo faktyczne pliki są tylko w jednym miejscu, a korzystasz z aplikacji w kilku różnych miejscach i jedynie linkujesz, żeby danych (plików) nie aktualizować w kilku różnych miejscach za każdym razem jak coś w nich zmienisz (np. swoje CV), albo robisz upgrejdy sprzętu albo całego systemu operacyjnego.

Natomiast pytanie było raczej odnośnie URL vs PATH.

konto usunięte

Temat: file_exists(URL) vs file_exists(PATH) ?

Michał Wachowski:
a nawyk może zostać

Nie chodzi o nawyk, is_file() nie nadaje się do wszystkiego, podobnie jak file_exists(). ;)

konto usunięte

Temat: file_exists(URL) vs file_exists(PATH) ?

Z tego co wiem, is_file podąża za symlinkami, ale nigdy tego nie sprawdzałem, nie miałem potrzeby.

Jeśli chcę uniezależnić działanie programu od struktury katalogów, to wyprowadzam strukturę do osobnego pliku i posługuję się zdefiniowanymi nazwami a nie rzeczywistymi ścieżkami.

Jeśli zaś linkuje pliki (np. obrazki) do tekstu, to też posługuję się ścieżką względną, zaczynając od katalogu, w którym lądują uploadowane rzeczy.

Jeśli zaś mam korzystać z danych z innych plików (inny serwer, czy jak), to CURL.
Jeśli mam sprawdzić czy URL istnieje - to CURL i sprawdzam jaki nagłówek został zwrócony.



Wyślij zaproszenie do