10
11
2008
Wenn man ganze Seiten die mit PHP erzeugt wurden cachen will kann man die PEAR-Bibliothek verwenden. Dort gibt es eine Klasse “CACHE” mit der sich einfach die komplette Ausgabe einer Webseite cachen lässt.
Benötigt wird:
PEAR-Cache (LINK)
Da die neue Version von PEAR-Cache wohl anders funktiniert als die von mir beschriebene, könnt Ihr hier die von mir behandelte Version runterladen. Damit sollte es hinhauen.
Einfach die Dateien in ein Verzeichnis “Cache” entpacken. Ausserdem ein weiteres Verzeichnis “cache” anlegen, in dem die Cache-Dateien gespeichert werden.
Will man eine komplette Seite zwischenspeichern, kann die Klasse wie folgt nutzen:
Am Anfang der PHP-Datei einfach folgenden Code setzen:
<?
require_once ('Cache/Output.php');
$opts = array('cache_dir' => '/absoluter/pfad/zu/ordner/cache');
$cache = new Cache_Output('file', $opts);
$cache->fileLocking=true;
$id = $cache->generateID($_SERVER['REQUEST_URI']);
if(!$content = $cache->start($id)){
?>
HIER KANN DER KOMPLETTE SEITENINHALT FOLGEN
<?
$cache->endPrint(20000);
} else {
echo $content;
exit();
}
echo $content;
?>
Das ganze funktioniert wie folgt:
Per require_once wird die nötige Klasse eingebunden. Unter ‘cache_dir’ wird das zu nutzende Cache-Verzeichnis angegeben. Dann wird eine neue Klasse instanziert (new …). Per ‘fileLocking’ wird die Cache-Datei schreibgeschützt, damit sie nicht mehrmals geöffnet werden kann.
Interessant wird es bei ‘generateID’. Anhand dieser frei generierbaren ID wird geprüft ob eine Cache-Version der Datei vorliegt oder ob die Seite neu geladen wird. In der Regel kann man hier den Dateinamen bzw. die Datei-URL benutzen. Vielleicht auch noch in Verbindung mit gesetzten Variablen oder Cookie-Infos.
Am Ende wird dann die gecachte Version ausgegeben. Mir ‘endPrint’ kann man der Klasse mitteilen nach wievielen Sekunden die Cache-Version der Datei verfallen soll und auf jeden Fall einen neue Dateiversion geladen werden soll.
Weitere Infos zum Thema:
http://openbook.galileocomputing.de/php_pear/03_0_caching-002.htm
Kommentare : 5 Kommentare »
Kategorien : PHP
23
10
2008
Um nach einer erledigten MYSQL-Query den davon belegten Speicher wieder freizugeben kann man die Funktion “mysql_free_result” verwenden.
Beispiel:
$query = mysql_query(“SELECT name FROM table”);
$result = mysql_fetch_array($query);
Mit mysql_free_result($query ); wird nun der durch die Query belegte Speicher freigegeben. Das macht aber eigetlich nur bei großen Abfragen (oder wenig Arbeitsspeicher) Sinn, da am Ende eines Scriptes der Speicher sowieso freigegeben wird.
Kommentare : 3 Kommentare »
Kategorien : PHP
23
10
2008
Um den aktuellen Sepicherbedarf eines PHP-Scriptes anzeigen zu lassen kann man einfach die Funktion “memory_get_usage” verwenden.
So gibt..
echo memory_get_usage();
.. den aktuellen Speicherbedarf im Script in Bytes aus.
Kommentare : Keine Kommentare »
Kategorien : PHP
19
08
2008
Da die PHP-Funktion ‘filesize’ nur Datei handeln kann, die lokal auf dem Server liegen, kann man die Dateigröße von entfernten Dateien (Remote, Resource) mithilfe folgender Funktionen herausfinden.
PHP4:
function extern_filesize($url)
{
ob_start();
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_exec($ch);
curl_close($ch);
$head = ob_get_contents();
ob_end_clean();
$regex = ‘/Content-Length:\s([0-9].+?)\s/’;
$count = preg_match($regex, $head, $matches);
if (isset($matches[1]))
{
$size = $matches[1];
}
else
{
$size = ‘unbekannt’;
}
return $fsize;
}
Und in PHP5:
function urlfilesize($url,$thereturn) {
if (substr($url,0,4)==‘http’) {
$x = array_change_key_case(get_headers($url, 1),CASE_LOWER);
$x = $x['content-length'];
}
else { $x = @filesize($url); }
if (!$thereturn) { return $x ; }
elseif($thereturn == ‘mb’) { return round($x / (1024*1024),2) ; }
elseif($thereturn == ‘kb’) { return round($x / (1024),2) ; }
}
echo urlfilesize(‘http://www.file.de/file.csv’,‘mb’)
Quelle: http://de2.php.net/manual/en/function.filesize.php#81906
Kommentare : Keine Kommentare »
Kategorien : PHP
18
08
2008
Um zwei Tabellen miteinander zu vergleichen; also um rauszufinden welche Datensätze in der einen Tabelle vorkommen und in der Anderen NICHT kann man mit einem LEFT JOIN arbeiten.
Hier ein Beispiel:
test1 ist die linke Tabelle mit allen Datensätzen.
test2 ist die rechte Tabelle wo einige Datensätze die den gleichen Schlüssel wie in Tabelle 1 haben, NICHT vorkommen.
Code:
SELECT *
FROM test1
LEFT JOIN test2 ON ( test1.id = test2.id )
WHERE test2.id IS NULL
Kommentare : Keine Kommentare »
Kategorien : Mysql
29
07
2008
Habe gerade bei den Webkrauts was schönes gefunden. Schönes Styling mit Hilfe von CSS für die guten <h> Tags.
Hier zu finden:
http://www.webkrauts.de/2007/06/03/headline-elemente-mit-css-stylen/
Kommentare : Keine Kommentare »
Kategorien : CSS
19
06
2008
<VERSUCH>
Der Panasonic TX-37LZD80F erreichte im Test der Zeitschrift “Digital Home” Ausgabe 02/2008 mit der Wertung 1.40 den ersten Platz. Er setzte sich damit erfolgreich gegen 5 andere LCD TV durch. Im Panasonic TX-37LZD80F Test urteilten die Tester:
“Der TX-37LZD80F von Panasonic hat keinen einzigen nennenswerten Nachteil.”
Panasonic TX-37LZD80F Test -> klick hier
</VERSUCH>
Kommentare : Keine Kommentare »
Kategorien : Allgemein