Variabile stringa che cambia

3 views
Skip to first unread message

Michele Bassanini

unread,
Jul 22, 2016, 6:27:32 AM7/22/16
to yii...@googlegroups.com

Ciao a tutti, qualcuno può aiutarmi a capire come mai mi fa questo scherzo?

            //Genero il nome del file
            $tempo=time();
            $nome_filesystem=$tempo."_".$cf.".".$file->getExtensionName();
            //Salvo nome su DB                       
            $this->RICEVUTA_NAME=$nome_filesystem;
           //Salvo file su file system
            $file->saveAs($_SERVER['DOCUMENT_ROOT'].Yii::app()->request->baseUrl.'/protected/uploads/'.$nome_filesystem);
               

Risultato:
campo database: 1469178787_CF1.pdf
nome file system: 1469178788_CF1.pdf
e ovviamente l'utente di back office non riesce a scaricare il file perché non lo trova.

Succede una volta ogni tanto, non sempre, come se "arrotondasse" qualcosa, ma non capisco come si possibile se la variabile $nome_filesystem è una stringa e viene usata in entrambi i salvataggi. Ora come ora li dobbiamo modificare tutti a manina sul DB...

-- 
Ing. Michele Bassanini
Area Tecnica Informatica
Servizio Automazione Gestionale
Università degli Studi di Pavia
Via Ferrata, 1
27100 Pavia - Italy
E-mail: michele....@unipv.it
tel: +39.0382.98.5285

Fabrizio Caldarelli

unread,
Jul 22, 2016, 6:34:59 AM7/22/16
to yii...@googlegroups.com
Ciao Michele,
dal pezzo di codice non ci sono errori, probabilmente
c'è qualche altra routine che va a scrivere, con lo stesso formato,
il nome del file, sul db o sul filesystem.

Io farei queste verifiche:
- nel model, in beforeInsert, afterInsert e simili non ci sia un'ulteriore modifica del nome del file?
- override del metodo saveAs che va a reimpostare il nome del file;

Il 22/07/16 12:27, Michele Bassanini ha scritto:
--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "yii-it" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a yii-it+un...@googlegroups.com.
Per postare in questo gruppo, invia un'email a yii...@googlegroups.com.
Visita questo gruppo all'indirizzo https://groups.google.com/group/yii-it.
Per altre opzioni visita https://groups.google.com/d/optout.

Michele Bassanini

unread,
Jul 22, 2016, 6:47:24 AM7/22/16
to yii...@googlegroups.com
Ciao Fabrizio,
quel codice è nel beforeSave e non abbiamo beforeInsert o afterInsert valorizzati.
$file = CUploadedFile::getInstance($this, 'uploadedFile'), avremmo dovuto fare un override della classe CUploadedFile, che non abbiamo...

Il file lo gestiamo solo in questa beforeSave, per quello non so dove sbattere la testa, per ora ci tocca correggerle a mano... :/

Mi sembra strano che differiscano solo di 1 cifra, io prendo time() e la concateno ad una stringa, quindi il risultato a casa mia è una stringa e in mezzo non può modificarsi...
L'alternativa è usare una funzione random ma con il time() mi rimangono in ordine.

Michele

Fabrizio Caldarelli

unread,
Jul 22, 2016, 6:52:47 AM7/22/16
to yii...@googlegroups.com
Ciao Michele,
il fatto che differisca di un'unità sembra che ci sia un doppio salvataggio,
o un discostamento tra il salvataggio su db e quello su filesystem.

Il 22/07/16 12:47, Michele Bassanini ha scritto:

Andrea Epifani

unread,
Jul 22, 2016, 8:09:30 AM7/22/16
to yii...@googlegroups.com
Avete provato a simulare il bug
con l'invio multiplo della stessa form?
Tipo invii vari o n click sul tasto submit?

Bruno

unread,
Jul 22, 2016, 9:15:06 AM7/22/16
to yii...@googlegroups.com
Ciao Michele,
sono d'accordo con le osservazioni di Andrea.Prova a generare il file inserendo un dato che sia sicuramente univoco:

es.
data + uniqueid (http://php.net/manual/en/function.uniqid.php) + estensione


B



The life is short.. live at your best!

Reply all
Reply to author
Forward
0 new messages