Archief - PHP: fwrite() naar bestand

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Qualistor

Legacy Member
Hallo,

Ik zit met een probleempje, eventjes de situatie uitleggen.

Een machine zet om de 3 minuten een *.DAT bestand via FTP op m'n webserver; De bedoeling is dat ik via PHP&MySQL dit bestand verwerkt.

Ik doe dus hetvolgende
Code:
$bestand=array_reverse(file("datalog.dat"));

foreach($bestand as $i)  
{  
    $i=explode("|",$i);  
    $uur = $i[0]; 
    $machine= $i[1]; 
    $bericht = $i[2];

mysql_query("insert into datalog (tijdstip, machine, PLC) Values('".$uur."','".$machine."','".$bericht."');") or die(mysql_error());

nu werkt dit allemaal goed en wel, de data komt in de database, maar het probleem is dat dit gebeurd iedere keer de pagina laadt. Dus na 10 views krijg ik 10 keer die data in m'n database.

Nu zou ik dat *.DAT bestand willen leegmaken via een fwrite functie() ofzo als ie de data in database heeft gezet, en dan met een

Code:
if($bericht="")
{ 
blabla

maar hou maak ik dat bestandje leeg via PHP ? ik heb al geprobeerd een lege string toe te voegen in de *.DAT file, maar ie plaatst dit gewoon erachter.
of zou er een andere oplossing bestaan om die 10 keer dezelfde data te vermijden?

na bv die 3 minuten komt er een nieuwe *.DAT file op, en dan moet ie terug de data toevoegen .

Iemand die me uit de nood kan helpen?

vriendelijke groeten,
Q.

Tyfius

Legacy Member
Indien dat bestandje weg mag, kan je gebruik maken van unlink.

Indien je toch wil schrijven gebruik je de optie "w" die je meegeeft aan fopen() om de filepointer in het begin van de file te plaatsen, en dus alles te overschrijven.

Qualistor

Legacy Member
heb het zelf al kunnen oplossen door dit te gebruiken
Code:
<?
$fp=fopen("datalog.dat",'w');
fwrite($fp,"");
fclose($fp);
?>

Maar ik heb ook nog een ander 'klein' probleempje:

De data wordt maar in de database gestoken als die pagina ( bv datalog.php ) wordt aangeroepen. Maar stel dat deze pagina in een tijdsspan niet wordt aangeroepen, en er komt reeds een nieuwe *.DAT file op de server, deze overschrijft automatische de bestaande, waar nog data van de vorige sessie instond.

Ik kan maar niets bedenken hoe ik dit kan omzeilen, want die file heeft iedere keer een zelfde naam?

Hou zou ik ervoor kunnen zorgen dat vanals er een nieuwe file op de webserver staat, deze vanzelf in de mySQL database kan gaan?

grtz Q.

EDIT : @ Tyfius , idd thx ;) had net hetzelfde gevonden, bedankt voor de reactie! Weet je toevallig m'n andere probleempje niet te verhelpen ? thx alot

Tyfius

Legacy Member
Gebruik maken van cronjobs, of je moet je .php script via een shell kunnen runnen. Dan gaat die blijven runnen, en een tijdspanne voorzien van X aantal minuten waarop hij checked.

Qualistor

Legacy Member
dat kan ik idd doen .. maar m'n webserver heb ik zelf niet in de hand, m'n site wordt gehost ergens anders :s
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan