[Funktion] File Funktion mit Timeout

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Funktion] File Funktion mit Timeout

    Hallo,
    bei der file-funktion lässt sich ja keine timeout zeit einstellen.
    jetzt hab ich auf http://de.php.net/manual/de/function.file.php was gefunden, was mit socket arbeitet. das problem ist nur das da keine weiterleitungen functionieren.
    gibt es eine also eine function die man z.b. nach 10sekunden abbrechen lassen kann und die sich so wie file verhält?

    greetz,
    woot

  • #2
    das problem ist nur das da keine weiterleitungen functionieren.
    soll heißen?

    Kommentar


    • #3
      ich bekomme dann z.b. so eine ausgabe:

      Code:
      HTTP/1.0 301 Moved Permanently Location: ###url### Set-Cookie: PREF=ID=5dad2bc9bdce8698:TM=11384
      63341:LM=1138463341:S=g1rcr_XpDZ7aaYUL; expires=Sun, 17-Jan-2038 19:
      14:07 GMT; path=/; domain=.###domain### Content-Type
      : text/html Server: GWS/2.1 Content-Length: 298 Date: Sat, 28 Jan 2006 15:49:01 GMT Connection: Keep-Alive
      301 Moved
      The document has moved here.

      Kommentar


      • #4
        müsste man dann auswerten...

        Kommentar


        • #5
          o.O?!

          ich suche eine function, die das selbe macht, wie die file-funktion. allerdings soll sich diese funktion mit einem timelimit versehen lassen.

          Kommentar


          • #6
            von php.net/fopen
            Simple class to fetch a HTTP URL. Supports "Location:"-redirections. Useful for servers with allow_url_fopen=false. Works with SSL-secured hosts.
            PHP-Code:
            <?php
            #usage:
            $r = new HTTPRequest('http://www.php.net');
            echo 
            $r->DownloadToString();

            class 
            HTTPRequest
            {
               var 
            $_fp;        // HTTP socket
               
            var $_url;        // full URL
               
            var $_host;        // HTTP host
               
            var $_protocol;    // protocol (HTTP/HTTPS)
               
            var $_uri;        // request URI
               
            var $_port;        // port
              
               // scan url
               
            function _scan_url()
               {
                   
            $req $this->_url;
                  
                   
            $pos strpos($req'://');
                   
            $this->_protocol strtolower(substr($req0$pos));
                  
                   
            $req substr($req$pos+3);
                   
            $pos strpos($req'/');
                   if(
            $pos === false)
                       
            $pos strlen($req);
                   
            $host substr($req0$pos);
                  
                   if(
            strpos($host':') !== false)
                   {
                       list(
            $this->_host$this->_port) = explode(':'$host);
                   }
                   else
                   {
                       
            $this->_host $host;
                       
            $this->_port = ($this->_protocol == 'https') ? 443 80;
                   }
                  
                   
            $this->_uri substr($req$pos);
                   if(
            $this->_uri == '')
                       
            $this->_uri '/';
               }
              
               
            // constructor
               
            function HTTPRequest($url)
               {
                   
            $this->_url $url;
                   
            $this->_scan_url();
               }
              
               
            // download URL to string
               
            function DownloadToString()
               {
                   
            $crlf "\r\n";
                  
                   
            // generate request
                   
            $req 'GET ' $this->_uri ' HTTP/1.0' $crlf
                       
            .    'Host: ' $this->_host $crlf
                       
            .    $crlf;
                  
                   
            // fetch
                   
            $this->_fp fsockopen(($this->_protocol == 'https' 'ssl://'
             
            '') . $this->_host$this->_port);
                   
            fwrite($this->_fp$req);
                   while(
            is_resource($this->_fp) && $this->_fp && !feof($this->_fp))
                       
            $response .= fread($this->_fp1024);
                   
            fclose($this->_fp);
                  
                   
            // split header and body
                   
            $pos strpos($response$crlf $crlf);
                   if(
            $pos === false)
                       return(
            $response);
                   
            $header substr($response0$pos);
                   
            $body substr($response$pos strlen($crlf));
                  
                   
            // parse headers
                   
            $headers = array();
                   
            $lines explode($crlf$header);
                   foreach(
            $lines as $line)
                       if((
            $pos strpos($line':')) !== false)
                           
            $headers[strtolower(trim(substr($line0$pos)))] =
             
            trim(substr($line$pos+1));
                  
                   
            // redirection?
                   
            if(isset($headers['location']))
                   {
                       
            $http = new HTTPRequest($headers['location']);
                       return(
            $http->DownloadToString($http));
                   }
                   else
                   {
                       return(
            $body);
                   }
               }
            }
            ?>
            mussu nur dein timeout bei fsockopen einfügen

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar

            Lädt...
            X