|
Categorieën >
PHP
fwrite schrijft eroverheen
|
|
|
offline
|
PHP ver gevorderde
|
Ik ben bezig met een AJAX chatbox, maar als ik het bericht naar een bestand schrijf krijg ik dit:
Citaat: admin_away - 11:37:17 - ey
eentijd - bla
test - test - test
Admin - eentijd - bla
test - test - test
Admin - eentijd - bla
test - test - test
Admin - eentijd - bla
ipv
Citaat: admin_away - 11:37:17 - ey
Admin - eentijd - bla
test - test - test
Admin - eentijd - bla
test - test - test
Admin - eentijd - bla
test - test - test
Admin - eentijd - bla
hij schrijft dus een paar bytes van de volgende regel over, script:
<?php
$message = $_GET['user'].' - '.date('H:i:s').' - '.$_GET['msg']."\n";
echo $message;
$thechat = fopen('chats/'.$_GET['chat'].'_chat.chat','r+');
fwrite($thechat,utf8_encode($message));
fclose($thechat);
?>
<?php $message = $_GET['user'].' - '.date('H:i:s').' - '.$_GET['msg']."\n"; $thechat = fopen('chats/'.$_GET['chat'].'_chat.chat','r+'); ?>
iemand enig idee hoe het wel moet werken, hij moet wel naar begin van bestand schrijven, het ophalen gebeurd alleen de 1e 30 regels.. |
1 antwoord
Vincjenzo – 17/12/2007 16:24 (Laatst gewijzigd op 19/12/2007 13:57)
|
|
offline
|
Nieuw lid
|
fopen met +r zet de pointer naar het begin van het bestand, en dan begint ie te schrijven.
Dit:
<?php
error_reporting(E_ALL);
$message = "een bericht\n";
$thechat = fopen('test.chat','r+');
fwrite($thechat,$message);
fclose($thechat);
?>
<?php $message = "een bericht\n"; $thechat = fopen('test.chat','r+'); ?>
Kan je doen tot je een ons weegt, maar het komt er niet bij. Dus ik denk dat je het gehele bestand moet lezen, het nieuwe bericht ervoor te plakken en dan alles wegschrijven. Maar dat is niet goed voor de performance lijkt me.
EDIT: (r+)
|
Dit onderwerp is gesloten.
|
|
|