File_exists_external

Door GaMer B, 15 jaar geleden, 2.215x bekeken

Titel zegt eigenlijk al alles. Deze kleine snippet kijkt of een extern bestand bestaat en gooit a.d.h.v. het wel of niet bestaan true of false terug.

Gesponsorde koppelingen

PHP script bestanden

  1. fileexistsexternal

 

Er zijn 10 reacties op 'Fileexistsexternal'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Tristan nvt
Tristan nvt
15 jaar geleden
 
0 +1 -0 -1
En wat bij bijv. een 301?
Douwe
Douwe
15 jaar geleden
 
0 +1 -0 -1
Bij een 301 wordt je doorgestuurd, en bestaat het opgevraagde bestand dus niet. Dan geeft deze functie dus false terug. En dat klopt dus ook.
Winston Smith
Winston Smith
15 jaar geleden
 
0 +1 -0 -1
In plaats van false of true (dat zijn - naast null - 'officieel' overigens de enige uitzonderingen op de regel dat constanten met hoofdletters geschreven worden), zou je ook een statuscode kunnen retourneren. Op die manier kan je in plaats van een 'bestaat niet' of 'bestaat wel' ook een 'bestaat wellicht' hebben, waarbij nader onderzoek nodig is.
GaMer B
GaMer B
15 jaar geleden
 
0 +1 -0 -1
Inderdaad, die 301 valt onder default. Eigelijk is er maar één http header die aangeeft als een bestand WEL bestaat en dat is die 200 OK. Als je andere headers wilt toevoegen be my guest :)

@Kasper, zat ik ook aan te denken, maar ik heb het principe van file_exists() nageleefd.

EDIT: Ik leef deze syntax regels na, trouwens.
Winston Smith
Winston Smith
15 jaar geleden
 
0 +1 -0 -1
Het maakt je functie wel makkelijker inderdaad, omdat je niet hoeft te weten wat die statuscodes betekenen. Je kan simpelweg

if (file_exists_external($url)) {
// doe iets
} else {
// doe iets anders
}

gebruiken. Ligt ook een beetje aan wat je met die functie wilt doen, en aan wat er mis kan gaan bij het uitvoeren van die functie (als er veel mis kan gaan, zou ik wel weer statuscodes willen gebruiken omdat ik wil weten waar het precies misgaat).
GaMer B
GaMer B
15 jaar geleden
 
0 +1 -0 -1
Ik gebruik deze functie voor het volgende:

Ik heb op audiosurfer.nl van zo'n thumbnails staan. Deze thumbnails komen van de YouTube server. Nu kan het zijn dat deze server wat vertraagd werkt, en daardoor wordt mijn website ook trager. Daarom heb ik een cache-functie gemaakt die dat verhelpt.
De hele cache-functie werkte goed, totdat ik een error kreeg van de functie file_get_contents() dat het bestand niet te bereiken was. Dus de fout-afhandeling was niet optimaal. Dus heb ik deze functie geschreven, zodat in plaats van die error een 'default plaatje' komt te staan.

Dus simpelweg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if(file_exists_external('link-naar-YT-plaatje.gif'))
{

    // hele cache functie doorvoeren
}
else
{
    // default plaatje weergeven
}[/code]

Sindsdien geen problemen meer ondervonden.
Iltar van der berg
iltar van der berg
15 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
case 'HTTP/1.0 404 Not Found':
case 'HTTP/1.1 404 Not Found':
    return FALSE; // Not Found
break;
            
case 'HTTP/1.0 200 OK':
case 'HTTP/1.1 200 OK':
    return TRUE; // Found
break;

default:
    return FALSE; // Else, nja, failure
break;


Beetje nutteloos ;)
hij is standaard false..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
            
case 'HTTP/1.0 200 OK':
case 'HTTP/1.1 200 OK':
    return TRUE; // Found
break;

default:
    return FALSE; // Else, nja, failure
break;
GaMer B
GaMer B
15 jaar geleden
 
0 +1 -0 -1
Ohja, klopt. Bedankt iltar :)
PHP erik
PHP erik
15 jaar geleden
 
0 +1 -0 -1
Had Jonathan dit niet al gemaakt?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Marcel
Marcel
15 jaar geleden
 
0 +1 -0 -1

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. fileexistsexternal

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.