.JPG files binnen 1 dag deleted
Ik heb gisteren een php gevonden alleen hij werkt niet echt, het is de bedoeling dat hij binnen een dag de eerst oude jpg files van de vorige dag automatisch verwijderd. Dit wordt gebruikt voor een automatische foto slider. Ik heb er een hekel aan om elke keer de map leeg te maken.
Kunnen jullie mij vertellen wat er verkeerd is aan deze file?
Code://
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$expiretime=1440; //Verloopt na minuten, 1 dag = 1x 24x60= 1440
$tmpFolder="/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/";
$fileTypes=".jpg";
foreach (glob($tmpFolder . $fileTypes) as $Filename) {
$FileCreationTime = filectime($Filename);
$FileAge = time() - $FileCreationTime;
if ($FileAge > ($expiretime * 60)){
echo "The file $Filename is older than $expiretime minutes\n";
//delete bestanden
unlink($Filename);
}
}
?>
$expiretime=1440; //Verloopt na minuten, 1 dag = 1x 24x60= 1440
$tmpFolder="/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/";
$fileTypes=".jpg";
foreach (glob($tmpFolder . $fileTypes) as $Filename) {
$FileCreationTime = filectime($Filename);
$FileAge = time() - $FileCreationTime;
if ($FileAge > ($expiretime * 60)){
echo "The file $Filename is older than $expiretime minutes\n";
//delete bestanden
unlink($Filename);
}
}
?>
Mogelijk werkt het met filemtime beter. Filectime is een inode change, en zal wat vaker false teruggeven dan filemtime.
Om maar te beginnen:
Wat doet het en wat doen de functies in deze regel code?
- foreach: een lus
- glob -> Find pathnames matching a pattern
Jij zegt: "glob($tmpFolder.$fileTypes)"
Dus eigenlijk staat hier:
Code (php)
1
glob(/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/.jpg)
En dat wil je natuurlijk niet.. je wilt dat "alle" jpg bestanden gevonden worden.
Dus dit is fout:
en moet worden:
maar dan ben je er nog niet.... want je zal merken dat het niet werkt...
Dus we gaan verder "debuggen", ik heb een bestand in een mapje geplaatst ( 22-06-2017 16:35 )
met de volgende code:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
echo 'Filename: '.$Filename.'<br/>';
$FileCreationTime = filectime($Filename);
echo 'FileCreationTime: '.$FileCreationTime.'<br/>';
echo 'FileExpireTime: '.$expiretime.'<br/>';
$FileAge = time() - $FileCreationTime;
echo 'FileAge: '.$FileAge.'<br/>';
echo 'Conclusie: if '.$FileAge.' >'.($expiretime * 60).' <br/>';
$FileCreationTime = filectime($Filename);
echo 'FileCreationTime: '.$FileCreationTime.'<br/>';
echo 'FileExpireTime: '.$expiretime.'<br/>';
$FileAge = time() - $FileCreationTime;
echo 'FileAge: '.$FileAge.'<br/>';
echo 'Conclusie: if '.$FileAge.' >'.($expiretime * 60).' <br/>';
Dat geeft als output:
Code (php)
1
2
3
4
5
2
3
4
5
Filename: uploads/20170622_132105.jpg
FileCreationTime: 1502960942
FileExpireTime: 1440
FileAge: 1148
Conclusie: if 1148 >86400
FileCreationTime: 1502960942
FileExpireTime: 1440
FileAge: 1148
Conclusie: if 1148 >86400
met deze info... ben je al iets wijzer... want je laatste "if" wil je het volgende weten:
Met andere woorden: if(1148 > 86400){
Dus er zal NOOIT een bestand verwijderd worden op deze manier.
Wellicht dat het handiger is om
aan te passen naar:
filectime is *niet* de creation time, zoals ook duidelijk vermeld wordt.
ik had je bericht nog niet gezien toen ik bezig was met typen;
maar goed, je hebt gelijk...
zou je ipv filectime(), filemtime() gebruiken dan krijg je deze output:
Code (php)
1
2
3
2
3
$FileCreationTime = filemtime($Filename);
// output: FileCreationTime: 1498142106
// vergelijkbare output zou dan zijn: if 4820471 > 86400 en dan zou if ($FileAge > ($expiretime * 60)){ ook prima werken :)
// output: FileCreationTime: 1498142106
// vergelijkbare output zou dan zijn: if 4820471 > 86400 en dan zou if ($FileAge > ($expiretime * 60)){ ook prima werken :)
Gewijzigd op 17/08/2017 11:43:43 door E vH
Ik krijg hierbij het idee dat dan altijd alles wordt verwijderd.
- SanThe - op 17/08/2017 11:45:16:
Ik krijg hierbij het idee dat dan altijd alles wordt verwijderd.
En wat was er verkeerd aan ook interessant leer ik ook weer van! :)
Perry Saarloos op 17/08/2017 13:15:14:
Uhm dus wat wis de uiteindelijke eind code?
Ik ben uit gegaan van jouw code in de topic post. Lees de reacties door, bekijk de voorbeelden en test het evenzelf...
Perry Saarloos op 17/08/2017 13:15:14:
En wat was er verkeerd aan ook interessant leer ik ook weer van! :)
Aanvulling op bovenstaande.. je zou aan de hand van de gegeven codes zelf een heeeeeel eind moeten komen, zelfs zo ver dat je het werkend krijgt.
Er is niks mis met "even zelf stoeien". ;-)
Kom je er dan ALSNOG niet uit.. help ik je graag weer verder.
Hint: regel 5 en regel 9 aanpassen ;-)
Gewijzigd op 17/08/2017 13:36:01 door E vH
Elmar vH op 17/08/2017 13:32:17:
Ik ben uit gegaan van jouw code in de topic post. Lees de reacties door, bekijk de voorbeelden en test het evenzelf...
Aanvulling op bovenstaande.. je zou aan de hand van de gegeven codes zelf een heeeeeel eind moeten komen, zelfs zo ver dat je het werkend krijgt.
Er is niks mis met "even zelf stoeien". ;-)
Kom je er dan ALSNOG niet uit.. help ik je graag weer verder.
Perry Saarloos op 17/08/2017 13:15:14:
Uhm dus wat wis de uiteindelijke eind code?
Ik ben uit gegaan van jouw code in de topic post. Lees de reacties door, bekijk de voorbeelden en test het evenzelf...
Perry Saarloos op 17/08/2017 13:15:14:
En wat was er verkeerd aan ook interessant leer ik ook weer van! :)
Aanvulling op bovenstaande.. je zou aan de hand van de gegeven codes zelf een heeeeeel eind moeten komen, zelfs zo ver dat je het werkend krijgt.
Er is niks mis met "even zelf stoeien". ;-)
Kom je er dan ALSNOG niet uit.. help ik je graag weer verder.
Haha oke ik ga het proberen! Bedankt!
Elmar vH op 17/08/2017 13:32:17:
Ik ben uit gegaan van jouw code in de topic post. Lees de reacties door, bekijk de voorbeelden en test het evenzelf...
Aanvulling op bovenstaande.. je zou aan de hand van de gegeven codes zelf een heeeeeel eind moeten komen, zelfs zo ver dat je het werkend krijgt.
Er is niks mis met "even zelf stoeien". ;-)
Kom je er dan ALSNOG niet uit.. help ik je graag weer verder.
Hint: regel 5 en regel 9 aanpassen ;-)
Perry Saarloos op 17/08/2017 13:15:14:
Uhm dus wat wis de uiteindelijke eind code?
Ik ben uit gegaan van jouw code in de topic post. Lees de reacties door, bekijk de voorbeelden en test het evenzelf...
Perry Saarloos op 17/08/2017 13:15:14:
En wat was er verkeerd aan ook interessant leer ik ook weer van! :)
Aanvulling op bovenstaande.. je zou aan de hand van de gegeven codes zelf een heeeeeel eind moeten komen, zelfs zo ver dat je het werkend krijgt.
Er is niks mis met "even zelf stoeien". ;-)
Kom je er dan ALSNOG niet uit.. help ik je graag weer verder.
Hint: regel 5 en regel 9 aanpassen ;-)
Ik krijg 'm niet aan de praat :( ik heb het nogmaals uit geprobeerd;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$expiretime=86400;
$tmpFolder="/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/";
$fileTypes="*.jpg";
foreach (glob($tmpFolder . $fileTypes) as $Filename) {
$FileCreationTime = filectime($Filename);
$FileAge = time() - $FileCreationTime;
if ($FileCreationTime > ($expiretime * 60)){
echo "The file $Filename is older than $expiretime minutes\n";
//delete bestanden
unlink($Filename);
}
}
?>
$expiretime=86400;
$tmpFolder="/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/";
$fileTypes="*.jpg";
foreach (glob($tmpFolder . $fileTypes) as $Filename) {
$FileCreationTime = filectime($Filename);
$FileAge = time() - $FileCreationTime;
if ($FileCreationTime > ($expiretime * 60)){
echo "The file $Filename is older than $expiretime minutes\n";
//delete bestanden
unlink($Filename);
}
}
?>
Wat doe ik verkeerd?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$expiretime=1440; //Verloopt na minuten, 1 dag = 1x 24x60= 1440
$tmpFolder="/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/";
$fileTypes="*.jpg"; // * toegevoegd
foreach (glob($tmpFolder . $fileTypes) as $Filename) {
$FileCreationTime = filemtime($Filename); // filemtime gebruikt ipv filectime
$FileAge = time() - $FileCreationTime;
if ($FileAge > ($expiretime * 60)){
echo "The file $Filename is older than $expiretime minutes\n";
//delete bestanden
unlink($Filename);
}
}
?>
$expiretime=1440; //Verloopt na minuten, 1 dag = 1x 24x60= 1440
$tmpFolder="/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/";
$fileTypes="*.jpg"; // * toegevoegd
foreach (glob($tmpFolder . $fileTypes) as $Filename) {
$FileCreationTime = filemtime($Filename); // filemtime gebruikt ipv filectime
$FileAge = time() - $FileCreationTime;
if ($FileAge > ($expiretime * 60)){
echo "The file $Filename is older than $expiretime minutes\n";
//delete bestanden
unlink($Filename);
}
}
?>
Gewijzigd op 31/08/2017 11:34:43 door E vH
Elmar vH op 31/08/2017 11:33:22:
Probeer eens (LET OP, dit betreft de code uit je beginpost! ):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$expiretime=1440; //Verloopt na minuten, 1 dag = 1x 24x60= 1440
$tmpFolder="/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/";
$fileTypes="*.jpg"; // * toegevoegd
foreach (glob($tmpFolder . $fileTypes) as $Filename) {
$FileCreationTime = filemtime($Filename); // filemtime gebruikt ipv filectime
$FileAge = time() - $FileCreationTime;
if ($FileAge > ($expiretime * 60)){
echo "The file $Filename is older than $expiretime minutes\n";
//delete bestanden
unlink($Filename);
}
}
?>
$expiretime=1440; //Verloopt na minuten, 1 dag = 1x 24x60= 1440
$tmpFolder="/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/";
$fileTypes="*.jpg"; // * toegevoegd
foreach (glob($tmpFolder . $fileTypes) as $Filename) {
$FileCreationTime = filemtime($Filename); // filemtime gebruikt ipv filectime
$FileAge = time() - $FileCreationTime;
if ($FileAge > ($expiretime * 60)){
echo "The file $Filename is older than $expiretime minutes\n";
//delete bestanden
unlink($Filename);
}
}
?>
Ik denk "glob($tmpFolder.$fileTypes)"
.$fileTypes moet er uit anders heb je achter mijn domeinpad .jpg staan ????
Weet je nog waar het sterretje voor stond? (Lees anders even terug)
Elmar vH op 31/08/2017 20:16:47:
Kijk eens goed.
Weet je nog waar het sterretje voor stond? (Lees anders even terug)
Weet je nog waar het sterretje voor stond? (Lees anders even terug)
(glob($tmpFolder . *$fileTypes) ?
Ps: heb je mijn code al geprobeerd?
Die hoort in de string van $fileTypes, en niet lukraak ergens in je PHP-code.
- Ariën - op 31/08/2017 20:47:38:
Ik weet niet wat je zit te rommelen, maar die sterretje staat daar niet goed.
Die hoort in de string van $fileTypes, en niet lukraak ergens in je PHP-code.
Die hoort in de string van $fileTypes, en niet lukraak ergens in je PHP-code.
Ik snap het niet meer..
En die * hoort in je string van $fileTypes, en niet voor die variabele.
Perry Saarloos op 31/08/2017 20:43:25:
(glob($tmpFolder . *$fileTypes) ?
Zie hier: waar ik het * uitleg
Je kreeg van mij de hint om regel 5 en regel 9 aan te passen, daarmee zou je code moeten werken...
Toevoeging op 01/09/2017 08:59:55:
Elmar vH op 01/09/2017 08:19:34:
Even in haken op je uitspraak:
Zie hier: waar ik het * uitleg
Je kreeg van mij de hint om regel 5 en regel 9 aan te passen, daarmee zou je code moeten werken...
Perry Saarloos op 31/08/2017 20:43:25:
(glob($tmpFolder . *$fileTypes) ?
Zie hier: waar ik het * uitleg
Je kreeg van mij de hint om regel 5 en regel 9 aan te passen, daarmee zou je code moeten werken...
$fileTypes="*.jpg";
Toevoeging op 01/09/2017 09:17:49:
Elmar vH op 01/09/2017 08:19:34:
Even in haken op je uitspraak:
Zie hier: waar ik het * uitleg
Je kreeg van mij de hint om regel 5 en regel 9 aan te passen, daarmee zou je code moeten werken...
Perry Saarloos op 31/08/2017 20:43:25:
(glob($tmpFolder . *$fileTypes) ?
Zie hier: waar ik het * uitleg
Je kreeg van mij de hint om regel 5 en regel 9 aan te passen, daarmee zou je code moeten werken...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$expiretime=86400; // Veranderd
$tmpFolder="/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/";
$fileTypes="*.jpg"; // Veranderd *
foreach (glob($tmpFolder . $fileTypes) as $Filename) {
$FileCreationTime = filemtime($Filename); // Veranderd naar filemtime
$FileAge = time() - $FileCreationTime;
if ($FileCreationTime > ($expiretime * 60)){ //Veranderd
echo "The file $Filename is older than $expiretime minutes\n";
//delete bestanden
unlink($Filename);
}
}
?>
$expiretime=86400; // Veranderd
$tmpFolder="/home/vhosts/(Domein)/subdomains/(Subdomein)/httpdocs/wp-content/uploads/uploaden/uploads/";
$fileTypes="*.jpg"; // Veranderd *
foreach (glob($tmpFolder . $fileTypes) as $Filename) {
$FileCreationTime = filemtime($Filename); // Veranderd naar filemtime
$FileAge = time() - $FileCreationTime;
if ($FileCreationTime > ($expiretime * 60)){ //Veranderd
echo "The file $Filename is older than $expiretime minutes\n";
//delete bestanden
unlink($Filename);
}
}
?>
Volgensmij is dit 'm?
Gewijzigd op 01/09/2017 08:24:51 door Perry S