Autor Zpráva
xXx
Profil *
Zdravím ve spolek a obracím se na Vás s prosbou o pomoc. V PHP téměř neumím a potřeboval bych pomoct s jednou věcí. Na server si posílám fotky z webkamery. Potřeboval bych udělat script, který mi smaže všechny fotky až na poslední. Fotky ukládám do složky kamera. Můj nápad byl pomocí scandir() načíst fotky do pole, to pak následně projít a pomocí unlink() vše odstranit. Je to šťastné řešení, nebo existuje něco elegantnějšího? Popřípadě pomohl by mi někdo se scriptem?
Alphard
Profil
Jestli v tom adresáři nejsou desetitisíce fotek, je váš nápad dobrý.
xXx
Profil *
Problém je ten, že teď tam je těch fotek opravdu strašná hromada (takže smažu celou složku a vytvořím novou). Poté nahraji script a budu ho pomocí CRONu pouštět každou hodinu. Teď si nejsem jist, jestli se mi fotky odesílají jednou, nebo dvakrát za minutu. Takže se bude mazat 60, nebo 120 fotek (to myslím, že není takové kvantum).
_Leopik 2x
Profil *
Ak potrebuješ mať v tej zložke len tú najnovšiu fotku, možno by si mohol pri nahravaní novej zmazať tú starú?
xXx
Profil *
_Leopik 2x: Jak by to šlo udělat? Nemám přístup k nastavení kamery (není má).

Takže script by mohl vypadat nějak takto?
<?php
    $slozka = '/kamera';
    $soubory = scandir($slozka);
    $velikost_pole = count($soubory);
    
    for($i = 1; $i < $velikost_pole; $i++)
    {
        unlink($soubory[i]);
    }    
?>
_Leopik 2x
Profil *
Tak zrejme tá kamera posiela aktuálny obrázok niekde na server nejakému scriptu, ktorý to spracuje a uloží. Ak áno, tak jednoducho spojíš tie dva scripty (na mazanie a na pridávanie) tak, aby najprv prebehol zložku a zmazal všetko staré a potom bude následovať časť, ktorá ten nový obrázok ukladá.
xXx
Profil *
Foto zasílá přímo kamera. Údajně se zadají pouze přihlašovací údaje k FTP a složka, kam se mají fotky cpát.
Alphard
Profil
xXx [#5]:
Ve výchozím stavu scandir() řadí vzestupně (tiše předpokládám, že kamera pojmenovává podle času nebo id, tj. že poslední fotka je nejvyšší). Takže indexovat od 0 do $velikost_pole - 1.
xXx
Profil *
Děkuji! Jinak je to dobře?
xXx
Profil *
Mohl by mi sem někdo, prosím, hodit rovnou celý script? Stále mi to nefunguje
jenikkozak
Profil
Základem by mohlo být:
<?php
    $slozka = '/kamera/';
    $soubory = scandir($slozka);
    $velikost_pole = count($soubory);
    
    for($i = 2; $i < $velikost_pole-1; $i++) //Jednička se odečítá, aby poslední položka zůstala. Výchozí dvojka je z toho důvodu, aby se vyloučila „.“ a „..“ - aktuální a nadřazená složka
    {
        unlink($slozka.$soubory[$i]); //Složka je uvedená proto, aby se mazalo ve správném adresáři, to by mohlo jinak nadělat paseku.
    }    
?>
xXx
Profil *
Na localhostu funguje v pohodě, bohužel na serveru vrací tyto chyby:
Warning: scandir(/kamera/) [function.scandir]: failed to open dir: No such file or directory in /data/web/virtuals/23213/virtual/www/smazat.php on line 5
Warning: scandir() [function.scandir]: (errno 2): No such file or directory in /data/web/virtuals/23213/virtual/www/smazat.php on line 5
xXx
Profil *
EDIT:
nepomáhá, ani když dám $slozka = 'http://www.url.cz/kamera';
Kajman
Profil
A když ji nastavíte na adresář, který používáte?
$slozka = '/data/web/virtuals/23213/virtual/www/kamera/';

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: