Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[Funktion] File Funktion mit Timeout [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[Funktion] File Funktion mit Timeout


 
woot
28-01-2006, 17:42 
 
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

 
TobiaZ
28-01-2006, 17:44 
 
das problem ist nur das da keine weiterleitungen functionieren. soll heißen?

 
woot
28-01-2006, 17:51 
 
ich bekomme dann z.b. so eine ausgabe:

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.

 
TobiaZ
28-01-2006, 17:58 
 
müsste man dann auswerten...

 
woot
28-01-2006, 18:11 
 
o.O?!

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

 
ghostgambler
28-01-2006, 18:22 
 
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
#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($req, 0, $pos));

$req = substr($req, $pos+3);
$pos = strpos($req, '/');
if($pos === false)
$pos = strlen($req);
$host = substr($req, 0, $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->_fp, 1024);
fclose($this->_fp);

// split header and body
$pos = strpos($response, $crlf . $crlf);
if($pos === false)
return($response);
$header = substr($response, 0, $pos);
$body = substr($response, $pos + 2 * strlen($crlf));

// parse headers
$headers = array();
$lines = explode($crlf, $header);
foreach($lines as $line)
if(($pos = strpos($line, ':')) !== false)
$headers[strtolower(trim(substr($line, 0, $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


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:24 Uhr.