// Функция записи в файл function mass_to_file($file, $mass, $line) { // Создаём файл если он не существует // ни в коем случае не используем w или w+ if(!file_exists($file) { fclose(fopen($file, "a+t"); } // Сохраняем резервную копию файла copy ($file,"old.bak"); // Открываем файл для чтения и записи в режиме r+t // некоторые версии FreeBSD имеют проблемы с режимом а+ // и не могут установить указатель на начало файла при помощи fseek $f=fopen($filename, "r+t") or die("Невозможно открыть файл"); // Блокируем файл (блокировка с запретом "подвисания") while(!flock($f, LOCK_EX+LOCK_NB)) { sleep(1); // ждём одну секунду } // Файл заблокирован, можно производить запись ftruncate($f, 0); // очищаем файл fseek($f, 0, SEEK_SET); // переходим в начало файла if (count($mass)<$line) { $line=count($mass); // если кол-во элементов массива меньше заданного параметра // пишем сколько есть } for ($i=0; $i<$line; $i++) { fwrite ($f, $mass[$i]."\r\n") ; // записываем строку из массива } fclose($f); // закрываем файл return; } // Функция чтения файла function file_to_mass($file) { // Открываем файл если он существует if(file_exists($file)) { $f=fopen($file, "r+t") or die("Невозможно открыть файл"); // Блокируем файл (разделяемая блокировка) flock($f, LOCK_SH); // ждём завершения процесса записи // В файл теперь никто не пишет, можно читать $cont=explode("\n",fread($f,filesize($file))); // считываем fclose($f); // закрываем файл } else { $cont="Файл не существует"; } // Возвращаем значение счётчика return $cont; } http://softtime.ru/forum/editpost.php?id_forum=1&id_theme=55382&id_post=321184