.JPG files binnen 1 dag deleted

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Perry S

Perry S

17/08/2017 10:54:53
Quote Anchor link
Goedemorgen,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

}

?>
 
PHP hulp

PHP hulp

19/04/2024 08:16:47
 
Ben van Velzen

Ben van Velzen

17/08/2017 11:09:05
Quote Anchor link
Mogelijk werkt het met filemtime beter. Filectime is een inode change, en zal wat vaker false teruggeven dan filemtime.
 
E vH

E vH

17/08/2017 11:30:15
Quote Anchor link
Als je niet weet wat er fout gaat... of omdat het niet werkt.. moet je gaan debuggen...

Om maar te beginnen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
foreach (glob($tmpFolder.$fileTypes) as $Filename) {


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)
PHP script in nieuw venster Selecteer het PHP script
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$fileTypes=".jpg";


en moet worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$fileTypes="*.jpg";


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)
PHP script in nieuw venster Selecteer het PHP script
1
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/>';


Dat geeft als output:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Filename: uploads/20170622_132105.jpg
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($FileAge > ($expiretime * 60)){


Met andere woorden: if(1148 > 86400){

Dus er zal NOOIT een bestand verwijderd worden op deze manier.
Wellicht dat het handiger is om

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($FileAge > ($expiretime * 60)){


aan te passen naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($FileCreationTime > ($expiretime * 60)){
 
Ben van Velzen

Ben van Velzen

17/08/2017 11:34:19
Quote Anchor link
filectime is *niet* de creation time, zoals ook duidelijk vermeld wordt.
 
E vH

E vH

17/08/2017 11:40:49
Quote Anchor link
Het ging mij meer even om het debuggen en oplossing geven voor zijn probleem door een zichtbare manier weer te geven die elke "leek" snapt.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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 :)
Gewijzigd op 17/08/2017 11:43:43 door E vH
 
- SanThe -

- SanThe -

17/08/2017 11:45:16
Quote Anchor link
Elmar vH op 17/08/2017 11:40:49:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
.... if 4820471 > 86400 ....


Ik krijg hierbij het idee dat dan altijd alles wordt verwijderd.
 
E vH

E vH

17/08/2017 11:50:03
Quote Anchor link
- SanThe - op 17/08/2017 11:45:16:
Ik krijg hierbij het idee dat dan altijd alles wordt verwijderd.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
filemtime($Filename); // 17-8-2017 09:23
//Output: 1502956150
//output: if 7137 >86400
 
Perry S

Perry S

17/08/2017 13:15:14
Quote Anchor link
Uhm dus wat wis de uiteindelijke eind code?

En wat was er verkeerd aan ook interessant leer ik ook weer van! :)
 
E vH

E vH

17/08/2017 13:32:17
Quote Anchor link
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
 
Perry S

Perry S

17/08/2017 13:36:12
Quote Anchor link
Elmar vH op 17/08/2017 13:32:17:
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!
 
Perry S

Perry S

31/08/2017 10:51:55
Quote Anchor link
Elmar vH op 17/08/2017 13:32:17:
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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}
}

?>


Wat doe ik verkeerd?
 
E vH

E vH

31/08/2017 11:33:22
Quote Anchor link
Probeer eens (LET OP, dit betreft de code uit je beginpost! ):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

}

?>
Gewijzigd op 31/08/2017 11:34:43 door E vH
 
Perry S

Perry S

31/08/2017 20:01:13
Quote Anchor link
Elmar vH op 31/08/2017 11:33:22:
Probeer eens (LET OP, dit betreft de code uit je beginpost! ):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

}

?>


Ik denk "glob($tmpFolder.$fileTypes)"

.$fileTypes moet er uit anders heb je achter mijn domeinpad .jpg staan ????
 
E vH

E vH

31/08/2017 20:16:47
Quote Anchor link
Kijk eens goed.

Weet je nog waar het sterretje voor stond? (Lees anders even terug)
 
Perry S

Perry S

31/08/2017 20:43:25
Quote Anchor link
Elmar vH op 31/08/2017 20:16:47:
Kijk eens goed.

Weet je nog waar het sterretje voor stond? (Lees anders even terug)


(glob($tmpFolder . *$fileTypes) ?
 
E vH

E vH

31/08/2017 20:46:10
Quote Anchor link
Lees even terug en kijk heel goed wat ik verander (oranje tekst).

Ps: heb je mijn code al geprobeerd?
 
- Ariën  -
Beheerder

- Ariën -

31/08/2017 20:47:38
Quote Anchor link
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.
 
Perry S

Perry S

31/08/2017 22:14:10
Quote Anchor link
- 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.


Ik snap het niet meer..
 
- Ariën  -
Beheerder

- Ariën -

31/08/2017 22:25:46
Quote Anchor link
Debug het anders eens, door de variabelen te echo'en. Dan weet je precies welke waarden er zijn, en kan je de fout zo vinden.

En die * hoort in je string van $fileTypes, en niet voor die variabele.
 
E vH

E vH

01/09/2017 08:19:34
Quote Anchor link
Even in haken op je uitspraak:
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...
 
Perry S

Perry S

01/09/2017 08:24:32
Quote Anchor link
Ik ga zo weer proberen :)

Toevoeging op 01/09/2017 08:59:55:

Elmar vH op 01/09/2017 08:19:34:
Even in haken op je uitspraak:
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:
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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

}

?>


Volgensmij is dit 'm?
Gewijzigd op 01/09/2017 08:24:51 door Perry S
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.