За последние 24 часа нас посетили 62947 программистов и 1748 роботов. Сейчас ищут 734 программиста ...

Работа с файлом вопросы по функциям работы с файлом

Тема в разделе "PHP для новичков", создана пользователем xes, 26 мар 2011.

  1. xes

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

    С нами с:
    13 мар 2011
    Сообщения:
    11
    Симпатии:
    0
    Необходи подчитать количесво элементов массива. Массив большой подсчитываеться раз в день при посищении сайта первым пользователем, далее берется из ini файла.
    Код (Text):
    1.  
    2. <?
    3.            
    4. if (date("y.m.d",filemtime("config.ini"))==date("y.m.d")) // Условие == написано для того чтобы тестить потом будет <
    5.                                                                                  //Если конфиг файл модернезировался вчера ну надеюсь на 1 человека в день хотябы ))) 
    6.              {
    7.               include("bd.php"); // Представляет собой массив $elbd[]
    8.     $Allelementbd=count($elbd); // Возврашаем количество элементов в массиве
    9.     unset($elbd); // Массив большой, поэтому удаляем из памяти
    10.     $fconfig=parse_ini_file("config.ini"); // Читаем конфиг
    11.     $fconfig["Allelementbd"]=$Allelementbd; // присваеваем элементу массива конфиг файла значение кол-ва элементов
    12.     //$f=fopen("config.ini","w"); //  Перезапись
    13.     //fwrite($f,'[GENERAL]'."\n"); //  Заголовок
    14.     //fclose($f); // Закрываем
    15.     $f=fopen("config.ini","a"); //
    16.     foreach ($fconfig as $key=>$val)
    17.         {
    18.         fwrite($f,$key.'="'.$val.'"'."\n");
    19.         }
    20.     fclose($f);
    21.     touch($f); // Дату изменеия файла текущею
    22.     }
    23. else // Если мы сегодя уже подсчитывали количесво элементов в базе. Сразу берем значение из ini файла
    24.     {
    25.     $fconfig=parse_ini_file("config.ini");
    26.     $Allelementbd=$fconfig["Allelementbd"];
    27.     unset($fconfig);
    28.     }  
    29. ?> 
    Вопросы:
    1. Если код такой как написан с закоментированым тексом //$f=fopen("config.ini","w"); //fwrite($f,'[GENERAL]'."\n");
    //fclose($f);

    То в ини файле повторяет вывод 2 раза (Оранжевым) почему не могу понять?
    Если блок раскоментировать//$f=fopen("config.ini","w"); ... то все отлично ини файл возврашает нормальную структуру как была со всеми исправлениями.

    Код (Text):
    1. [GENERAL]
    2. Urlmysite="http://www.xxx.ru"
    3. Allelementbd="1"
    4. Activelementbd="0"         (Здесь у меня действительно пропуск строки в файле ини исходном)
    5.  
    6. Urlmysite="http://www.xxx.ru"
    7. Allelementbd="5"
    8. Activelementbd="0"
    9. Urlmysite="http://www.xxx.ru"
    10. Allelementbd="5"
    11. Activelementbd="0"
    2. Если fclose($f) внести вовнутрь цикла то выдает ошибку хотя по логике не должен мы ведь каждую итерацию открываем файл заново.
    foreach ($fconfig as $key=>$val)
    {
    fwrite($f,$key.'="'.$val.'"'."\n");
    fclose($f)
    }