Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ricerca personalizzata

lettura e scrittura sullo stesso file da 2 programmi

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto UtenteMassimoB

0
voti

[1] lettura e scrittura sullo stesso file da 2 programmi

Messaggioda Foto Utentedadduni » 18 ago 2017, 9:55

salve a tutti,
vi pongo una questione più "etica" che pratica.
Un server regge una pagina php locale che, compilando un form, scrive dei dati su un file.
Questo file deve essere letto da un programm python che prenderà questi dati e ci farà cose varie (senza mai modificare il file)

Posso lasciare il file sempre aperto in python in sola lettura e scriverci comunque sopra in php? Ho fatto la prova "da smanettone" e sembra funzionare senza alcun problema, il python legge il file senza doverlo riaprire ogni volta e il php ci scrive sopra senza alcun problema ma... Mi pare di ricordare che fare operazioni contemporanee sullo stesso file sia piuttosto una operazione barbara [-X [-X
Voi cosa ne pensate e come affrontereste il problema?

Davide
Avatar utente
Foto Utentedadduni
735 1 5 10
Expert
Expert
 
Messaggi: 570
Iscritto il: 23 mag 2014, 15:26

0
voti

[2] Re: lettura e scrittura sullo stesso file da 2 programmi

Messaggioda Foto UtenteAjeieBrazov » 18 ago 2017, 11:10

E' un'operazione barbara da evitare.
Avatar utente
Foto UtenteAjeieBrazov
1.405 4 8
---
 
Messaggi: 595
Iscritto il: 23 mag 2017, 20:53

0
voti

[3] Re: lettura e scrittura sullo stesso file da 2 programmi

Messaggioda Foto Utenteboiler » 18 ago 2017, 11:30

La soluzione migliore sarebbe usare un database.

Se vuoi usare il file e sei sotto Windows, puoi mettere un collegamento ODBC al file e usare quello.

Altrimenti, visto che mi pare di capire che il server PHP e lo script sono sullo stesso computer, usa un sistema di mutua esclusione basato sul clock.
Quando uno dei programmi vuole accede al file, richiede al clock l'ora. Se i secondi sono tra 05 e 25 ci accede solo python, se sono tra 35 e 55 ci accede solo PHP (ovviamente puoi modificare gli intervalli adeguandoli alla tua necessità, lasciando però sempre una banda morta in mezzo).

Boiler
Avatar utente
Foto Utenteboiler
11,5k 3 6 13
G.Master EY
G.Master EY
 
Messaggi: 1936
Iscritto il: 9 nov 2011, 11:27

0
voti

[4] Re: lettura e scrittura sullo stesso file da 2 programmi

Messaggioda Foto Utentedadduni » 18 ago 2017, 11:54

vuol dire che nel worst case il php modifica il file a secondo 5 e il python deve aspettare 30 secondi per poterlo leggere? ?%
Avatar utente
Foto Utentedadduni
735 1 5 10
Expert
Expert
 
Messaggi: 570
Iscritto il: 23 mag 2014, 15:26

0
voti

[5] Re: lettura e scrittura sullo stesso file da 2 programmi

Messaggioda Foto Utenteboiler » 18 ago 2017, 12:12

boiler ha scritto:(ovviamente puoi modificare gli intervalli adeguandoli alla tua necessità, lasciando però sempre una banda morta in mezzo)
Avatar utente
Foto Utenteboiler
11,5k 3 6 13
G.Master EY
G.Master EY
 
Messaggi: 1936
Iscritto il: 9 nov 2011, 11:27

0
voti

[6] Re: lettura e scrittura sullo stesso file da 2 programmi

Messaggioda Foto Utentedadduni » 18 ago 2017, 12:15

ops, sorry :roll:
grazie a tutti :ok:
Avatar utente
Foto Utentedadduni
735 1 5 10
Expert
Expert
 
Messaggi: 570
Iscritto il: 23 mag 2014, 15:26

0
voti

[7] Re: lettura e scrittura sullo stesso file da 2 programmi

Messaggioda Foto Utentevenexian » 18 ago 2017, 14:23

Non mi pare sia un'operazione strana.
L'accesso ai file è gestito dal SO che evita i conflitti.
Se due programmi vi accedono contemporaneamente, l'ultimo che vi scriverà sopra modificherà fisicamente il file su disco.
Se nel tuo caso, uno solo dei due programmi è abilitato alla scrittura, il problema non si pone proprio.
Io vedo solo due punti importanti:
. Il programma che scrive deve fare sempre un 'flush' ad ogni scrittura per poter rendere accessibile il valore modificato all'altro programma.
. Il programma che legge deve chiudere e riaprire il file ad ogni lettura per poter accedere alle informazioni eventualmente modificate.
Non vedo nessuna possibilità di conflitti o come queste operazioni possano essere definite 'cattiva programmazione'.
Avatar utente
Foto Utentevenexian
1.377 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 440
Iscritto il: 13 mag 2017, 9:07

0
voti

[8] Re: lettura e scrittura sullo stesso file da 2 programmi

Messaggioda Foto Utenteluxinterior » 18 ago 2017, 15:04

La metto sul tavolo senza sapere nulla del tuo problema:
Il php e il python sono due processi del tutto indipendenti ? Non c'è modo di sincronizzarli ?
Se uno solo scrive e l'altro solo legge per me non c'è necessità di mantenere i processi indipendenti Quando chi scrive aggiorna i dati lo segnala a chi legge, in mezzo nessuno fa nulla.
Avatar utente
Foto Utenteluxinterior
1.432 1 4 8
Expert EY
Expert EY
 
Messaggi: 676
Iscritto il: 6 gen 2016, 16:48

0
voti

[9] Re: lettura e scrittura sullo stesso file da 2 programmi

Messaggioda Foto Utentecarlomariamanenti » 18 ago 2017, 16:26

Ciao Foto Utentedadduni, l'operazione non è proprio "corretta", credo che come già suggerito l'utilizzo di un database sia la soluzione più elegante.

Questa tua richiesta mi ha fatto ritornare indietro nel tempo di almeno una ventina di anni: ricordo che per alcune architetture "sfortunate" si usava spesso l'utilizzo di un file "di appoggio" per lo scambio di dati tra due applicativi magari neppure ospiti dello stesso sistema.
Il trucchetto per rendere meno barbaro il tutto consisteva nel sincronizzare con il clock dell'orologio, (secondi pari, secondi dispari), la lettura e scrittura del file il quale, per ragioni di velocità, era sovente ospitato su un RamDisk.

Oggi per fortuna la tecnologia ci viene un pochino in aiuto ed esistono tecnologie più raffinate per operare quello che tu hai giustamente definito un metodo "barbaro".

Buon lavoro, -carlo.
Avatar utente
Foto Utentecarlomariamanenti
56,3k 5 10 13
G.Master EY
G.Master EY
 
Messaggi: 4210
Iscritto il: 18 gen 2012, 9:44

0
voti

[10] Re: lettura e scrittura sullo stesso file da 2 programmi

Messaggioda Foto Utentexyz » 18 ago 2017, 19:00

Inter-process communication (IPC) ë possibile tra programmi differenti e la scelta di usare i file non è tra le scelte migliori, esisto alternative sicuramente più valide disponibili a livello di sistema operativo come: named pipe, shared memory, socket, ecc... :

https://en.wikipedia.org/wiki/Inter-pro ... munication

oltre a infrastrutture a un livello intermedio usate dai sistemi distribuiti:

https://en.wikipedia.org/wiki/Message-o ... middleware

o altri sistemi usati a livello applicativo.
Avatar utente
Foto Utentexyz
3.790 2 4 5
Master EY
Master EY
 
Messaggi: 1063
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti