• User

    Idee per filesystem

    Domanda... Come memorizzare in un db i nomi dei files e qualche dato (ora creazione, ecc...) appena li carico su un server?

    Esempio: carico dei files via FTP o WebDAV. Potrei fare un cronjob che ogni TOT ore mi fa lo scan alla ricerca di nuovi files, ma non sarebbe "real-time".

    Esiste secondo voi un modo per caricare sul server i files e dopo l'upload far partire uno script che si occupi di memorizzare nel DB il tutto?


  • User Attivo

    credo sia piu' facile se li carichi con un form di upload


  • User

    @olaola said:

    credo sia piu' facile se li carichi con un form di uploadSicuramente. Non posso però: o FTP o (meglio) WebDAV 🙂


  • User Attivo

    Ciao Napolux,
    per quanto concerne lo scriptino php non ci sono problemi, potresti creare una cosa del tipo:

    ***$apri=opendir('.');
    while ($file = readdir($apri)){
    //query
    }
    ***che scansiona sistematicamente tutto il contenuto di una directory. Ovviamente all'interno del ciclo while puoi mettere tutti i controlli che vuoi (sull'estensione del file, se sia una directory o meno con ***is_dir($file), ***ecc...).

    Per quanto concerne l'attivazione dello scriptino puoi utilizzare o la chicca di probid, per una sorta di cron fatto in php o alternativamente, creare una evento o fisso o stistico al richiamo di una pagina php.

    Per fisso intendo una pagina fatta ad hoc, magari con accesso protetto, che invochi direttamente da browser quando vuoi, (per esempio tutte le mattine). Per statistico intendo invece che lo script parte ad esempio 1 volta ogni 100 visite da parte di un qualsiasi utente su una qualsiasi pagina.
    Mi spiego meglio...
    Supponi ad esempio di voler fare questa operazione all'incirca ogni ora e che la homepage di un tuo sito sia visitata di media 50 volte l'ora. Nella tua homepage allora devi effettuare la generazione di un numero casuale compreso fra 0 e 100:
    ***$num=**rand(0,100);
    ***quindi se $num<2 (con i tuoi accessi 50 accessi capiterà mediamente una volta l'ora) invochi lo scriptino di cui sopra... ecco fatto un cron statistico...:D

    Spero di esserti stato d'aiuto. Facci sapere quale scelta intraprendi!
    :ciauz:


  • User

    @ceccus said:

    Supponi ad esempio di voler fare questa operazione all'incirca ogni ora e che la homepage di un tuo sito sia visitata di media 50 volte l'ora. Nella tua homepage allora devi effettuare la generazione di un numero casuale compreso fra 0 e 100: ***$num=**rand(0,100);
    ***quindi se $num<2 (con i tuoi accessi 50 accessi capiterà mediamente una volta l'ora) invochi lo scriptino di cui sopra. Ecco fatto un cron statistico...:D

    Spero di esserti stato d'aiuto. Facci sapere quale scelta intraprendi!
    :ciauz:

    Fin qui c'ero anch'io. 😉 Nel senso che posso impostare un cronjob che faccia la cosa. Il mio dubbio è se ci fosse o meno un "demone" o qualcosa di simile che si attiva ed esegue un determinato script ogni volta che qualcuno carica il file sul server. Così non dovrei aspettare 1 ora (o più a seconda del tempo impostato): il mio utente potrebbe caricare il file sull'ftp, aprire il browser e cercarlo immediatamente... 🙂

    Cmq ora mi guardo probid, grazie


  • User Attivo

    Dovresti tentare di intervenire direttamente sul demone ftp o vedere se esiste qualcosa di già fatto in giro ma credo diventi più una questione di script da shell (da li potresti anche effettuare le query) e quindi più da sezione linux...


  • User

    Capito. Potresti gentilmente spostare nella sezione adatta? 😉


  • User Attivo

    Ok, prima però voglio essere certo che questa questa sezione ti abbia dato tutto il possibile, vagliando alcune alternativa e/o ipotesi...

    Non mi è chiaro se ti occorre che il file, successivamente all'upload via ftp, debba essere raggiungibile via browser (il che dovrebbe essere automaticamente già fattibile) oppure se debba essere presente in una sorta di elenco richiamato da una specifica pagina. In quest'ultima ipotesi avresti la possibilità di intervenire con php...

    Inoltre, è necessario il salvataggio dei nomi dei file nel db? Perché se non lo fosse, con lo scriptino dei post precedenti potresti leggere il contenuto di una directory per ogni singolo accesso e mostrarlo direttamente all'utente senza passare per il db...

    Oppure, ma già andiamo nelle impostazioni server, potresti mettere nel cron (mi pare di capire che sei sotto linux...) un comando da shell del tipo:

    *ls /directory/ > elenco.txt **

    e poi richiamare il file da php per effettuare le query ogni volta che viene richiamata la pagina lato utente o, sempre da shell, effettuare direttamente le query verso mysql. Questo però richiede l'accesso da shell. Alternativamente gli stessi comandi li potresti (permessi a parte) eseguire da php con uno di questi comandi:
    http://it.php.net/manual/it/ref.exec.php

    In realtà mi pare che di soluzioni ce ne siano parecchie, forse non mi è chiaro fino in fondo il tuo problema...:bho:

    Dacci qualche altro indizio che la questione potrebbe farsi interessante...:fumato:


  • User

    @ceccus said:

    Dacci qualche altro indizio che la questione potrebbe farsi interessante...:fumato:

    Altri indizi:

    • L'utente carica i files sul server (webDAV, ma anche FTP)
    • una volta finito l'upload i dati del file (data, nome, ecc...) devono essere memorizzati nel db
    • l'utente via browser, attraverso un qualcosa di molto simile ad un file manager può integrare i dati ricavati "automaticamente" (e qui ci sta il fantomatico demone) dal sistema con una descrizione sua
    • una volta effettuate queste operazioni il file è disponibile in un motore di ricerca che oltre a cercare il testo presente nella descrizione cerca anche per nome fileEsempio: carico passeggiata.txt e gli assegno come descrizione "pluto e pippo vanno al bar insieme".

    Il motore di ricerca deve ritornarmi passeggiata.txt sia che io cerchi "passeggiata" (ovvero parte del nome file) che cercando "vanno al bar" (parte della descrizione).

    Il contenuto del file non mi interessa. Posso fare sì un cronjob una volta ogni TOT ore che si scorre tutto il filesystem e memorizza nel db i dati dei files se non presenti (quello lo so già fare), ma vorrei che la cosa sia più "in tempo reale".

    Per questo avevo pensato ad un demone. Considerando anche la quantità di dati che alla fine saranno presenti in questo archivio non posso scorrere il filesystem ogni volta che un utente entra ad esempio ogni tot ore.

    Immagina il carico con gb e gb di dati

    Ho bisogno di qualcosa di incrementale:

    carico 10 files -> memorizzo 10 files
    carico 5 files -> ne memorizzo altri 5 oltre i 10 che già ho

    Se serve altro sono a disposizione. 😉


  • User Attivo

    Vediamo se qualcuno nella sezione linux può darci qualche buona idea...

    Intanto la butto lì: l'FTP ha dei buoni file di log? In tal caso potresti aprirli e leggerli via php...