[PHP] Mappen eenzijdig synchroniseren via FTP

Pagina: 1
Acties:
  • 148 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hi,

Ik ben aan het zoeken naar een eenvoudige manier om een lokale en een remote map te syncen via PHP. Nu vermoed ik dat ik gebruik zal moeten maken van de ftp functionaliteit van PHP, echter, deze staat volgens de documentatie niet het downloaden van een complete map toe. Wat ik zoek is een snelle manier om een complete map te downloaden, maar met de uitzondering dat reeds bestaande bestanden mogen worden overgeslagen.

Nu heb ik het vermoeden dat ik een recursieve functie zal moeten gaan schrijven, maar vond dit een zo voor de hand liggend probleem dat ik dacht misschien denk ik wel veel te moeilijk.

Dit is dus geen script request, maar gewoon even een oriëntatie om te kijken of het schrijven van een recursieve functie wellicht niet ontzettend overbodig is!

Acties:
  • 0 Henk 'm!

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 20:24
Wat is er dan niet recursief aan het 'bewandelen' van een directory structuur? Dat je via een FTP tool een complete map ineens kunt uploaden lijkt voor de gebruiker niet recursief te gaan maar intern is dit wel recursief; alle files/folders worden stuk voor stuk naar de server gestuurd. Dat klinkt recursief.

Verder zou je kunnen kijken naar commando's als file_exists, filemtime, filectime en de gehele ftp-reeks.

Acties:
  • 0 Henk 'm!

  • Deikke
  • Registratie: Juni 2004
  • Laatst online: 21-09 06:44
Ik heb ooit een soort progsel geschreven in PHP die hetzelfde deed. Je zult wel recursief moeten werken (zowel lokaal als remote). Eerst kijken naar welke bestanden er waren. Daarna een lijst met veranderde/toegevoegde bestanden opmaken. Exclude list hierop toepassen en vervolgens aan het uploaden/downloaden (wat dan wel weer in één keer verloopt)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@jan-marten, beetje loze opmerking, natuurlijk begrijp ik dat dit vaak zo niet altijd een recursieve functie is, dat wil echter nog niet zeggen dat ik in PHP zelf een recursieve functie hoef te schrijven als deze al bestaat! Wellicht bestaat er een ftp_get_directory() met een vlaggetje voor including all-subdirectories. Op deze manier heb ik dus een in PHP aanwezige standaard functie hiervoor en hoef ik hem dus niet zelf te schrijven ;)

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Je wil niet alle bestanden ophalen, maar alleen de bestanden die gewijzigd zijn. Recursief door de mappen op een FTP-server lopen vanuit PHP is niet zo moeilijk. Dan hou je een lijst bij met wat je later moet downloaden (op basis van mtime ofzo) en dat doe je dan lekker daarna. Waarom zou je dan een functie willen hebben die alles van de FTP-server afhaalt? :)

Acties:
  • 0 Henk 'm!

Verwijderd

MisterData schreef op zondag 06 mei 2007 @ 12:08:
Je wil niet alle bestanden ophalen, maar alleen de bestanden die gewijzigd zijn. Recursief door de mappen op een FTP-server lopen vanuit PHP is niet zo moeilijk. Dan hou je een lijst bij met wat je later moet downloaden (op basis van mtime ofzo) en dat doe je dan lekker daarna. Waarom zou je dan een functie willen hebben die alles van de FTP-server afhaalt? :)
Omdat dat niet zo heel vreemd is om te willen, en dat het dus best zou kunnen dat er al dergelijke functies bestaan. De makers van die PHP modules als de FTP module zijn echter niet zo best in het maken van spul dat je direct kunt gebruiken, je zult er altijd zelf iets voor moeten schrijven.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@cheatah, precies mijn idee! Het leek me een vrij voor de hand liggende functie, die dus eenvoudig zelf out-of-the-box al checks kan doen of een bestand is gewijzigd en zo nodig dus updaten. Uiteraard alles ten opzichte van een bepaalde map, waarbij je optioneel kan aangeven of hij subfolders moet meenemen. Blijkbaar is er geen zodanige functie, helaas! Wellicht zwerft er ergens wel een kant-en-klare class rond. FF googlen dus voor mij deze middag!
Pagina: 1