Сохранение инфы в файл

Статус
В этой теме нельзя размещать новые ответы.

XATTAB

Читатель
Заблокирован
Регистрация
16 Май 2009
Сообщения
18
Реакции
1
  • Автор темы
  • Заблокирован
  • #1
Народ подскажите начинающему php-шнику какой нужен код чтобы информация сохранялась не в базу а в простой .txt файл
 
PHP:
$fp=fopen('file.txt','w+');
fputs ($fp,$string);
fclose ($fp);
 
в PHP5 еще можно:
PHP:
<?php
$data = "string";
file_put_contents('file.txt', $data);
?>
 
функция дописывания текста в конец файла с блокировкой для защиты файла в момент записи:

PHP:
function SafeAppendToFile($filename, $content) {
  $fp = @fopen($filename, "ab"); 
  if ($fp) { 
    flock ($fp,LOCK_EX);
    fwrite($fp, $content);
    fflush ($fp);
    flock ($fp,LOCK_UN);
    fclose($fp); 
  }
}

Для чего вам нужна запись в файл? Логи писать? Или хранить в тексте небольшую базу данных с возможностью записи/чтения? И, наверное, несколькими пользователями одновременно?
 
функция дописывания текста в конец файла с блокировкой для защиты файла в момент записи:
PHP:
function SafeAppendToFile($filename, $content) {
  $fp = @fopen($filename, "ab"); 
  if ($fp) { 
    flock ($fp,LOCK_EX);
    fwrite($fp, $content);
    fflush ($fp);
    flock ($fp,LOCK_UN);
    fclose($fp); 
  }
}
Для чего вам нужна запись в файл? Логи писать? Или хранить в тексте небольшую базу данных с возможностью записи/чтения? И, наверное, несколькими пользователями одновременно?
А для чего fflush(), если хэндл тут же следом закрывается?
И где обработка случая, если не удастся поставить лок, на момент записи? Все равно будем писать?
Думаю, немного лучше будет так:
PHP:
<?php
function WriteFile ($file_name, $data, $mode = "a")
{
    $fp = fopen($file_name, $mode);
    if(!$fp) {
        return FALSE;
    } else {
        if(!flock($fp, LOCK_EX)) {
            return FALSE;
        } else {
            if(!fwrite($fp, $data)) {
                return FALSE;
            } else {
                if(!flock($fp, LOCK_UN)) {
                    return FALSE;
                } else {
                    if(!fclose($fp)) {
                        return FALSE;
                    }
                }
            }
        }
    }
    return TRUE;
}
?>
 
  • Автор темы
  • Заблокирован
  • #6
функция дописывания текста в конец файла с блокировкой для защиты файла в момент записи:
PHP:
function SafeAppendToFile($filename, $content) {
  $fp = @fopen($filename, "ab"); 
  if ($fp) { 
    flock ($fp,LOCK_EX);
    fwrite($fp, $content);
    fflush ($fp);
    flock ($fp,LOCK_UN);
    fclose($fp); 
  }
}
Для чего вам нужна запись в файл? Логи писать? Или хранить в тексте небольшую базу данных с возможностью записи/чтения? И, наверное, несколькими пользователями одновременно?

Мне надо хранить небольшую базу данных в этом файле с возможностью чтения и записи!

ps А как можно к этому коду подцепить форму заказа? :ah:
 
ps А как можно к этому коду подцепить форму заказа?

а конкретней? телепаты в отпуске. Тебе надо с формы заказы введенные данные записывать в файл?
 
А для чего fflush(), если хэндл тут же следом закрывается?
а вот тут интересный момент получается. Хэндл закрывается не тут же, а после flock(). При наличии буфера и если при этом буфер не полностью заполнен фактическая запись выносится за flock. Я бы оставил fflush.

И где обработка случая, если не удастся поставить лок, на момент записи? Все равно будем писать?

согласен, проверять flock надо. Особенно под windows. Под линуксом функция может всегда возвращать false. Тогда придется игнорировать результат flock и все равно писать в файл.
Или использовать такой вариант проверки:

PHP:
if ( !$fp || !flock($fp,LOCK_EX|LOCK_NB,$eWouldBlock) || $eWouldBlock ) {

Кому интересно, могут подробнее почитать в комментариях здесь:
[/QUOTE]

Мне надо хранить небольшую базу данных в этом файле с возможностью чтения и записи!
ps А как можно к этому коду подцепить форму заказа? :ah:

К этому коду нельзя прицепить форму заказа. Код может применяться для логирования в процессе отладки, когда пропадания содержимого файла или частей некритично. Для реализации базы данных в текстовом файле необходим набор функций для записи/чтения/добавления строк базы и доступа к полям базы по имени. Если задача представляет академический интерес, то можете продумать интерфейс сами. Можно взять и готовую реализацию базы на текстовых файлах, например, здесь реализован доступ к текстовому файлу как к sql-базе:


Вариант с mysql не рассматриваем, т.к. у вас наверняка веские основания не использовать mysql.;)
 
а почему не использовать sqlite ?
 
  • Автор темы
  • Заблокирован
  • #10
а конкретней? телепаты в отпуске. Тебе надо с формы заказы введенные данные записывать в файл?
Да прямо в точку! надо чтобы всё записалось в простой txt файл а не в базу данных занесось!

Добавлено через 49 секунд
а почему не использовать sqlite ?
Что такое sqlite? расскажи поподробнее! ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху