1. PHP / Говнокод #1476

    +146.1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    private function putContents($file, $string)
        {
            $result = false;
            $f = @fopen($file, 'ab+');
            if ($f) {
                fseek($f, 0);
                ftruncate($f, 0);
                $tmp = @fwrite($f, $string);
                if (!($tmp === FALSE)) {
                    $result = true;
                }
                @fclose($f);
            }
            @chmod($file, $this->options['file_umask']);
            return $result;
        }

    А почему не fopen($file, 'w'); ?

    Запостил: guest, 06 Августа 2009

    Комментарии (4) RSS

    • мануал не всем дано читать :)
      Ответить
    • Потому что fopen(…, 'w') обнулит файл, процесс, читающий файл, который прочитает его между открытием через fopen(…, 'w') и записью в него, получит пустой файл.

      Код хороший, но в нём нехватает flock($f, LOCK_EX) перед fseek
      Ответить
    • А почему не file_put_contents ?
      Ответить

    Добавить комментарий