За последние 24 часа нас посетили 56956 программистов и 1777 роботов. Сейчас ищут 1015 программистов ...

Проблема с dba_replace

Тема в разделе "PHP для новичков", создана пользователем Ігор, 18 июл 2009.

  1. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Вообщем кодю под линуксом.
    PHP:
    1.  
    2. <?php
    3. ......
    4. public function offsetSet($key, $value)
    5. {  
    6.   $key=dba_key_split(CONFIG_SECTION.$key);
    7.   dba_replace($key, $value, $this->dba);
    8.  
    9. }
    10. ....
    11. ?>
    12.  
    Как вы поняли запись осуществляется через интерфейс arrayAccess
    Проблема в том, что при создании нового файла первая запись в базу осуществляется без проблем, но при попытке сделать другую (или изменить существующую вызывается ошибка. ПХП говорит что то о том, что невозможно писать в секцию.
    Права на папку с БД полные 0777
    Владелец файла - Апач с правами записи
    Что не так?
    Открытия осуществляется в режиме "с"
     
  2. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Почитайте про ф-ции dba_key_split и dba_replace. dba_key_split возвращает массив, а в dba_replace первый параметр - string. Может в этом проблема?
     
  3. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    а полный текст ошибки где?
     
  4. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    http://www.php.ru/manual/function.dba-open.html
    Код (Text):
    1. open mode 'c' is broken for several internal handlers and truncates the database instead of appending data to an existent database. Also dbm and ndbm fail on mode 'c' in typical configurations (this cannot be fixed).
    Может быть это?
    Кстати, не могу понять чем
    open отличается от popen ???
    Как это можно понять "на постоянной основе"
     
  5. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Код (Text):
    1. Could not copy croup [xxxxxxx-xx] to temporary strem
     
  6. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    При завершении интерпретации кода, соединение с базой данных не разрывается и остаётся активным для последующих интерпретаций. Это позволяет сократить время выполнения скрипта, но необходимо очищать память после запросов.