Logo classes.scriptsphp.org PHP

go to nav bar

SimpleHttp

Envoyer des requètes HTTP simples et récupérer le résultat

La classe SimpleHttp fournit des methodes permettant d'envoyer des requètes HTTP tout en controlant le temps impartie a ces requètes. Elle gére les requètes simples GET et HEAD, parse les entêtes retounées pour qu'elle soient facilement utilisables, permet de mettre le résultat dans un cache serveur pour accélérer les requètes suivantes. Cette classe a été développée dans le but de servir les requètes destinées a l'agrégateur RSS simpleRSS. Elle est donc limitée dans la prise en charge de HTTP .. . Copier le fichier de classe dans un répertoire accessible en inclusion, puis créer un répertoire cache dans le dossier des scripts dans lesquels vous souhaitez utiliser la classe de cachecore. NB: la classe fonctionne uniquement avec PHP 5

Les Méthodes

Exemples

  1. Vérifier l'existence d'un fichier distant

La Source

<?php

class urlopen {

    private 
$url;
    private 
$req;
    private 
$timeout;
    var 
$header;
    var 
$body;
    var 
$errorlog;
    var 
$cachetime;
        
    public function 
__construct($url,$req='GET',$cachetime='600',$timeout='1') {
    
        require_once (
'chrono.class.php');
        
$this->url $url;
        
$this->req $req;
        
$this->cachetime $cachetime;
        
$this->timeout $timeout;
        
    }

    private function 
parseurl($urls) {
    
        
$pos=strpos($urls"://");
        
$url['proto']=substr($urls0,$pos);
        
$rest=substr($urls,$pos+3);
        
$pos=strpos($rest"/");
        
$url['domaine']=substr($rest,0,$pos);
        
$url['qs']=substr($rest,$pos);
        return 
$url;
        
    }
        
    private function 
get_header($string) {
    
        
$h=explode("\n",$string);
        
$hout = array();
        
$hout['response'] = current($h);
        
next($h);
        while(list(,
$hline) = each ($h) ) {
            
$hline=explode(":",$hline);
            if ( isset(
$hline[1]) && strpos($hline[1],";") ) { 
                
$hlinecsp=explode(";",$hline[1]);
                
$hout[trim($hline[0])] = $hlinecsp ;
            } else {
                if (isset(
$hline[1]))
                        
$hout[trim($hline[0])] = trim ($hline[1]) ;
                else
                        
$hout[trim($hline[0])] ='';
            }
        }
        return 
$hout;
    }

    public function 
readsocket$use_cache 'NO_CACHE' ) {
    
        
$cache = new cachecore$this->url.$this->req );
        if ( 
$use_cache==='USE_CACHE' && $output $cache->get_cached_data$this->cachetime ) ) {
            
$this->parse_response($output);
            return 
TRUE;
        }

        
$urltab $this->parseurl($this->url);
        
        
$chrono = new Chrono;
        
$chrono->start();
        
        
$fp = @fsockopen ($urltab['domaine'], 80$errno$errstr$this->timeout);
        if (!
$fp) {
            
$this->errorlog .= "$errstr ($errno)\n";
            return 
FALSE;
        } else {
            
            
fputs ($fp"{$this->req} {$urltab['qs']} HTTP/1.0\r\nHost: {$urltab['domaine']}\r\n\r\n");
            
$data '';
            while (!
feof($fp)) {
                if (
$chrono->stop()>$this->timeout) {
                    
$this->errorlog .= "break - too long\n";
                    return 
FALSE;
                }
                
$data .= fgets ($fp,256);
            }
            
fclose ($fp);            
            
            if (
$use_cache==='USE_CACHE'$cache->put_cached_data($data);
            
            
$this->parse_response($data);
        }
        return 
TRUE;
    }
    
    private function 
parse_response($data) {
        if (
$pos=strpos($data"\r\n\r\n"));
        else (
$pos=0);
        
        
$header substr($data0,$pos);
            
        
$this->header=$this->get_header($header);
        
$this->body ltrim(substr($data$pos));
    }

}

?>

Merci de ne pas suivre ce lien emails.

0.0779s | «»
PHP powered