- Home
- Categorie
- Coding e Sistemistica
- PHP
- Azioni di scrittura nello stesso istante
-
Purtoppo non so darti una risposta a questo, però ti sconsiglio di usare file di testo come database, ti conviene usare un database mysql che non ti da tutti questi problemi.
-
puoi usare flock
http://it2.php.net/manual/it/function.flock.php
per bloccare l'accesso al file mentre ci scrivi, in modo che altri non possano farlo nello stesso momento...
-
@olaola said:
puoi usare flock
http://it2.php.net/manual/it/function.flock.php
per bloccare l'accesso al file mentre ci scrivi, in modo che altri non possano farlo nello stesso momento...
Praticamente perfetto
Grazie
-
si ma se usi flock() devi poi considerare una procedura d'errore per il form, visto che solo uno degli utenti andrà a scrivere..
per evitare questi casi conviene sempre e solo il database.
-
@piccolo socrate said:
si ma se usi flock() devi poi considerare una procedura d'errore per il form, visto che solo uno degli utenti andrà a scrivere..
per evitare questi casi conviene sempre e solo il database.
E pazienza se è talmente "sfigato" da dover dare il submit nello stesso istante che lo da un altro, può anche tornare indietro e rinviare di nuovo, i dati se sono dentro un textarea o input rimangono :bho:
-
potresti usare la tecnica che avevi pensato... aspetti un tot di tempo (consiglio usleep al posto di sleep, magari in coppia con rand per generare un numero casuale di microsecondi) e poi ritenti il comando...
se va male anche la seconda e' sfiga vera!!!
-
@olaola said:
potresti usare la tecnica che avevi pensato... aspetti un tot di tempo (consiglio usleep al posto di sleep, magari in coppia con rand per generare un numero casuale di microsecondi) e poi ritenti il comando...
se va male anche la seconda e' sfiga vera!!!
Eheheh davvero
usleep() è meglio?
O altrimenti ancora meglio:
Metto sleep o usleep con microsecondi generati da un rand (), poi una volta arrivato il momento, inizia con la funzione flock() a bloccare
Cosi che se anche 100 utenti si trovano a fare submit nello stesso momento oltre ad esserci una probabilità su un migliaglio di trovarsi a scrivere nello stesso momento, e se proprio è sfiga vera allora subito dopo il primo che raggiunge si trova flock che blocca l'accesso al file ad altri o alle brutte non consente a nessuno di scrivere, cosi che comunque i dati non subiscono problemi
Flock almeno dovrebbe avere una priorità utente vero? cioè conta in microsecondi anche lui? e se capita che flock() viene eseguita praticamente nello stesso istante? avviene un blocco di richieste temporaneo al server?
-
non e' che usleep sia meglio di sleep, ma ti permette di aspettare tot microsecondi, invece che tot secondi... per velocizzare la cosa...
poi certo il controllo su flock deve rimanere... cioe' se il file e' locckato, l'operazione fallisce e devi prevedere la cosa con un "if".. nella pagina di manuale di flock il primo esempio ti spiega come gestire l'eventualita'...
-
Ho trovato una riga che volevo mostrare qui per chiedere una cosa:
[php] $filetoopen = $ub['home_path'].'forum'.$inforum.'/list.php';
$list = get_file($filetoopen);
$lst = fopen($filetoopen,'r+');
lock_file($lst);[/php]Mi stavo chiedendo ma il lock_file funziona come il flock? no perchè in rete la funzione lock_file non la trovo da nessuna parte.Ciauz.
-
Ciao KevinDavidMitnick e benvenuto nel Forum GT,
probabilmente la funzione che tu citi è stata creata dall'utente che ha scritto quel codice, per questo non la trovi in rete.
Comunque dovrebbe essere riportata nella stessa pagina dove hai preso il pezzo di codice.
-
Edit:
- Inizia i messaggi con una maiuscola e termina con un punto.
- non sono tollerati flame e polemiche.