anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 14 Nov, 2019 18:08

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
BeitragVerfasst: So 10 Apr, 2011 16:01 
Offline
Eingeweihter
Eingeweihter

Registriert: Mi 12 Aug, 2009 18:11
Beiträge: 65
Geschlecht: Männlich
LoGD: http://www.plueschdrache.de
Hallo,

hier eine kleine Modifikation für die Bio im Standard-Release. Der ein oder andere kennt es: der Server mit dem verlinkten Avatar streikt gerade, das getimagesize hängt entsprechend ewig und am Ende gibts statt der Bio irgendwann eine weiße Seite. Da getimagesize kein eigenes timeout kennt, habe ich mal nach einer gescheiten Lösung gesucht.

Die sieht so aus, dass nun per cURL erstmal nur die http-header geholt werden und auch auf den Statuscode geschaut wird. Dabei lässt sich netter Weise ein timeout definieren, wobei ich jetzt default 5 Sekunden gewählt habe. Unten stehende Funktion habe ich im Kern in einem Beitrag unter http://de.php.net/curl gefunden und ein bisschen angepasst. Wer möchte, kann damit auch gezielt auf einen bestimmten Statuscode abfragen.

Voraussetzung:
cURL muß auf dem Server installiert und aktiv sein.
Wer lokal mit xammp testet, muß hierzu ggf. in der php.ini das Semicolon vor extension=php_curl.dll herausnehmen.

Einbau:

1) Folgende Funktion entweder oben in die bio.php kopieren, oder in die common.php, wenn man sie noch anderweitig brauchen kann.

$this->bbcode_second_pass_code('', '
function http_response($url, $status = null, $timeout = 5)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if(!$head)
{
return FALSE;
}

if($status === null)
{
if($httpCode < 400)
{
return TRUE;
}
else
{
return FALSE;
}
}
elseif($status == $httpCode)
{
return TRUE;
}

return FALSE;
}
')

2) bio.php

suche:
$this->bbcode_second_pass_code('', '
if ($row[avatar]){
$pic_size = @getimagesize($row[avatar]);
$pic_width = $pic_size[0];
$pic_height = $pic_size[1];
output("<table><tr><td valign='top'>`n`n<img src=\"$row[avatar]\" ",true);
if ($pic_width > 200) output("width=\"200\" ",true );
if ($pic_height > 200) output("height=\"200\" ",true );
output("alt=\"".preg_replace("'[`].'","",$row[name])."\">&nbsp;</td><td valign='top'>",true);
} else {
output("<table><tr><td>(kein Bild)&nbsp;&nbsp;&nbsp;</td><td>",true);
}
')
und ersetze mit:
$this->bbcode_second_pass_code('', '
if ($row['avatar'])
{
if (http_response($row['avatar']))
{
$pic_size = @getimagesize($row['avatar']);
$pic_width = $pic_size[0];
$pic_height = $pic_size[1];
output("<table><tr><td valign='top'>`n`n<img src=\"".$row['avatar']."\" ",true);
if ($pic_width > 200) output("width=\"200\" ",true );
if ($pic_height > 200) output("height=\"200\" ",true );
output("alt=\"".preg_replace("'[`].'","",$row['name'])."\">&nbsp;</td><td valign='top'>",true);
}
else
{
output("<table><tr><td>(Avatar nicht erreichbar)&nbsp;&nbsp;&nbsp;</td><td>",true);
}
}
else
{
output("<table><tr><td>(kein Bild)&nbsp;&nbsp;&nbsp;</td><td>",true);
}
')

Gruß
Charon


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum