unlink("../../../userpics.smsnetwork.org/public_html/{$_SESSION['sess_recruitment_link']}.jpg");
Så där kör jag med.
Du kan ju ta modda om dem.
14 svar · 1 327 visningar · startad av Guldstrand
Jag håller på med en kod som automatiskt ska radera bildfiler på min server efter 3 timmar. (Bilderna blir dock inte raderade från servern.)
Är det jag som tänker helt fel, eller varför blir inte bilderna raderade med hjälp av följande kod.
$hours = 3;
$dt = get_date_time(gmtime() - ($hours * 3600));
$res = mysql_query("SELECT id, webcam_id, filename FROM archive WHERE added < $dt");
while ($arr = mysql_fetch_assoc($res))
{
@unlink("/cam/webcam_" .intval($arr["webcam_id"]). "/" .htmlspecialchars($arr["filename"]). "");
mysql_query("DELETE FROM archive WHERE webcam_id = " .intval($arr["webcam_id"]). "");
}
Är oerhört tacksam för lite hjälp i rätt riktning.
unlink("../../../userpics.smsnetwork.org/public_html/{$_SESSION['sess_recruitment_link']}.jpg");
Så där kör jag med.
Du kan ju ta modda om dem.
unlink("../../../userpics.smsnetwork.org/public_html/{$_SESSION['sess_recruitment_link']}.jpg");
Så där kör jag med.
Du kan ju ta modda om dem.
Tack för svaret, men det hjälper tyvärr inte mig.
Sökvägen till bilden, är korrekt.
Du bör absolut ta bort @-tecknet innan anropet till unlink. Det gör ju så att eventuella felmeddelanden inte visas.
Sen är de tomma strängarna i slutet av argumenten till unlink och mysql_query helt onödiga. Påverkar visserligen inte ditt problem, men det gör filen större helt i onödan.
Du bör absolut ta bort @-tecknet innan anropet till unlink. Det gör ju så att eventuella felmeddelanden inte visas.
Sen är de tomma strängarna i slutet av argumenten till unlink och mysql_query helt onödiga. Påverkar visserligen inte ditt problem, men det gör filen större helt i onödan.
Det stämmer helt fint :-)
han fick ta en liten titt på hur man har löst det själv :)
Så det går ju lösa hans problem om man vill, men vore ju gött om dem tog sig och titta eller tittar man på
$hours = 3;
$dt = get_date_time(gmtime() - ($hours * 3600));
$sql = "SELECT id, webcam_id, filename FROM archive WHERE added < $dt";
$result = mysql_query($sql, $conn);
while($row = mysql_fetch_array($result)) {
unlink("/cam/webcam_{$row['webcam_id']}/{$row['filename']}");
$sql = "DELETE FROM archive WHERE webcam_id = '{$row['webcam_id']}' LIMIT 1";
mysql_query($sql) or die("SQL: $sql<br />" . mysql_error());
}
och skulle mappen vara utanför så bör du lägga till .. innan /
Sedan tiden kan du med hjälp av Datum Intervall också lösa det istället än ta ut den på det sätt du har gjort för snygga till koden direkt i mysql.
Du har en liten början där i alle fall.
Sen är de tomma strängarna i slutet av argumenten till unlink och mysql_query helt onödiga. Påverkar visserligen inte ditt problem, men det gör filen större helt i onödan.
Vad menar du med "tomma strängar"? De är inte tomma.
"" är en tom sträng.
"" är en tom sträng.
Hade uppskattat något mer hjälp än så, men tror dock att jag förstod poängen ändå.
Som jag skrev så hade det jag skrev om tomma strängar ingenting med ditt problem att göra, det var bara ett allmänt tips.
Fick du något felmeddelande när du tog bort @-tecknet?
Som jag skrev så hade det jag skrev om tomma strängar ingenting med ditt problem att göra, det var bara ett allmänt tips.
Fick du något felmeddelande när du tog bort @-tecknet?
Nej, jag fick inget felmeddelande, fast att error reporting är "aktiverat".
Jag misstänkte att mysql kanske returnerade ett tomt värde, och att det var därför som inte bilderna kunde raderas?
Ska kolla om det fungerar bättre vid nästa körning.
Är felrapporteringsnivån inställd på att visa även E_WARNING?
Kommer du in i while-loopen?
Vad returnerar unlink? true/false
Är du helt 100% säker på att sökvägen är korrekt? Tänk på att / utgår från diskroten, inte webbroten.
Ja, det är inställt på E_WARNING.
Vet ej om jag ens kommer in i loopen (är dålig på felsökning).
Samma med unlink, vet inte.
Ja, jag är helt säker på sökvägen.
För att kolla om du kommer in i while-loopen kan du helt enkelt lägga in
echo "Inne i while" på lämplig rad :)
Lägg till en if-sats för att kontrollera vad unlink returnerar.
if (unlink(sökväg))
echo "unlink returnerade TRUE"
else
echo "unlink returnerade FALSE"
Ja, det var ju väldigt enkelt.
Ska testa med detta. Tack!
EDIT: Efter lite lätt felsökning (tack till "metalboy"), märkte jag att sökvägen till bilden, trots allt var fel.
(Den första / skulle tydligen bort.)
Får försöka att svälja min stolthet, och anse mig besegrad.
Tack för all hjälp.