Avatar billede anders_h Novice
15. oktober 2005 - 07:33 Der er 7 kommentarer og
1 løsning

Mappeadgang til phpcache

Hejsa!

Jeg er ved at lave et cachingsystem i php (http://www.eksperten.dk/spm/655403), men hvordan giver jeg en mappe adgang til at kunne lægge en *.htm eller *.cache-fil (vist nok noget med 777-adgang eller sådan noget), men hvordan gøres det?

Mvh. Anders
Avatar billede hmortensen Nybegynder
15. oktober 2005 - 07:40 #1
664 burde være nok, afhængig af opsætningen.

Du kan sætte rettighederne med de fleste ftp klienter.
Avatar billede anders_h Novice
15. oktober 2005 - 07:41 #2
Okay, det er altså ikke noget man kan gøre i php?
Avatar billede anders_h Novice
15. oktober 2005 - 07:50 #3
Tror jeg har fundet ud af det med Core FTP :-)
Avatar billede hmortensen Nybegynder
15. oktober 2005 - 07:50 #4
Jo, med funtionen chmod()
Avatar billede anders_h Novice
15. oktober 2005 - 08:16 #5
Ved du tilfældigvis hvad jeg skal gøre her (taget ud fra artikel http://www.eksperten.dk/artikler/504) for at gemme indholdet af filen i html format i mappen cache/fil.htm <-- Jeg har givet chmod-adgang..

<?php
echo "Hej";
function loadCache($dir, $file) {
if (!is_readable($dir.$file)) {
echo "Fejl";
} else {
$buffer = '';

$fd = fopen ($dir.$file, "r");
while (!feof($fd)) $buffer .= fgets($fd);
fclose ($fd);
}

return $buffer;
}

function saveCache($dir, $file, $cache, $backupdir='') {
# 0x1 : File cached
# 0x2 : Directory doesnt exist
# 0x4 : Directory not writable
# 0x8 : Backup directory doesnt exist
# 0x10 : Backup directory not writable

if (!is_dir($dir)) $status += 0x2;
else if (!is_writable($dir)) $status += 0x4;
else {
$cachefile = $dir.$file;
$backupfile = $backupdir.$file;

if ($backupdir && file_exists($cachefile)) {
if (!is_dir($backupdir)) $status += 0x8;
else if (!is_writable($backupdir)) $status += 0x10;
else {
if (file_exists($backupfile)) unlink($backupfile);
rename($cachefile, $backupfile);
}
}

$fp = fopen($cachefile, 'w');
fputs($fp, $cache);
fclose($fp);

$status += 0x1;
}

return $status;
}

function deleteCache($dir, $file) {
if (file_exists($dir.$file)) unlink($dir.$file);
return true;
}
?>
Avatar billede anders_h Novice
15. oktober 2005 - 08:35 #6
Nu fandt jeg ud af det med et script fra en anden artikel :-)

<?php
$indhold = "Hej";
#sæt filen
$fil = "statisk_undersider/cache.htm";


# Hvis filen ikke eksisterer ELLER filen er over $levetid sekunder gammel, laves der et nyt cache
#start output bufferen
ob_start();


## Her placeres den PHP kode hvis output skal caches!


# Åbner filen til at skrive
$f = fopen($fil, 'w');
# Skriver
fwrite($f, $indhold);
# Lukker filen
fclose($f);
# Udskriver outputtet til browseren
ob_end_flush();
?>

hmortensen -> Smider du lige et svar?
Avatar billede hmortensen Nybegynder
15. oktober 2005 - 08:43 #7
Ta du dem bare selv :)
Avatar billede anders_h Novice
15. oktober 2005 - 08:44 #8
:-) Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester