Дописание фаила

Discussion in 'PHP' started by bdsql, 6 Apr 2012.

  1. bdsql

    bdsql New Member

    Joined:
    28 Dec 2011
    Messages:
    12
    Likes Received:
    2
    Reputations:
    0
    есть на хосте фаил, к которому дописывается строчки)
    если потоков много, то фаил просто пишеться а не дописывается, как исправить?)
    вот пример как сейчас
    file_put_contents(file_get_contents("asd.log")."\n".$prrr);
    как осуществить это?)
     
  2. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    PHP:
    $f fopen('asd.log''a+');
    if(
    $f)
    {
      
    flock($fLOCK_EX);
      
    fputs($f"\n".$prrr);
      
    flock($fLOCK_UN);
      
    fclose($f);
    }
    А читать каждый раз файл полностью, а потом снова его записывать, как у тебя сделано, - бред полный...
     
  3. sl1k

    sl1k Member

    Joined:
    31 Jul 2009
    Messages:
    106
    Likes Received:
    26
    Reputations:
    5
    вообще то
    PHP:
    file_put_contents($filename$text."\n",FILE_APPEND)
    если нужно именно file_put_contents
     
  4. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    GRRRL Power, FILE_APPEND'a разве не будет достаточно для file_put_contents?
     
  5. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Тогда уж
    PHP:
    file_put_contents($filename$text."\n",FILE_APPEND LOCK_EX);
    Можно конечно, я просто по старым привычкам из PHP 4 редко новые функции использую, когда есть эквивалентные старые.
     
    #5 GRRRL Power, 6 Apr 2012
    Last edited: 6 Apr 2012
  6. bdsql

    bdsql New Member

    Joined:
    28 Dec 2011
    Messages:
    12
    Likes Received:
    2
    Reputations:
    0
    спасибо, разобрался, помог |qbz| в частности)
    а в чем разница между
    file_put_contents($filename, $text."\n",FILE_APPEND | LOCK_EX);
    и просто
    file_put_contents($filename, $text."\n",FILE_APPEND);
    ?)
     
  7. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    А ты открой php.net и почитай, там даже на русском. LOCK_EX как раз тебе заблокирует файл, пока в него что-то пишется, и другие скрипты не смогут его переписать, пока занявший скрипт файл его не закроет. То бишь, никакие данные не потеряются, даже если очень оживленно работать с файлом.
     
  8. bdsql

    bdsql New Member

    Joined:
    28 Dec 2011
    Messages:
    12
    Likes Received:
    2
    Reputations:
    0
    думаю "на ходу" не стоит менять пхп фаил)) как закончиться работа, добавлю " | LOCK_EX", лучше 2 - 10 строчек не будет чем потерять все))