Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Использование файла вместо MySQL
 
 автор: Yuri   (28.11.2005 в 18:49)   письмо автору
 
 

Хотелось бы услышать мнения по поводу использования на сервере вместо MySQL просто файла (к примеру .csv), для хранения базы данных. Особенно интересует проблема совместного боступа (одновременное чтение/запись). И вопрос безопасности. Мне б не хотелось, чтобы пользователь посмотрев исходный код страницы скачал этот самый файл.
*О всех преимуществах MySQL я в курсе*

   
 
 автор: Евгений Петров   (28.11.2005 в 19:34)   письмо автору
 
   для: Yuri   (28.11.2005 в 18:49)
 

Впринципе если вы не планируете хранить большие обьемы данных, то можно организовать хранение в файлах. По поводу доступа.... можно организовать очередь, т.е. все задания заносятся в список и какой то обработчик берет по одному заданию и выполняет. Защитить от скачивания можно при помощи .htaccess.

   
 
 автор: Yuri   (28.11.2005 в 20:55)   письмо автору
 
   для: Евгений Петров   (28.11.2005 в 19:34)
 

Что касается .htaccess, то к сожалению у меня нет возможности конфигурить сторонний сервер. Хотя, было бы идеально.
А насчет создания обработчика... При реализации данного процесса по принципу выполнения очереди задания (к примеру, задание на запись фиксируются в массиве, а определенная функция пытаеться перенести информацию из переменной массива в файл), процесс неибежно будет подвисать. Причем в геометрической прогрессии (в зависимости от числа пользователей). О чтении вообще думать страшно при этом. Даже если это все опустить, написать такой код, предусмотрев все, будет, мягко говоря, не просто.
Хотя скорей всего я чего то не догоняю.

   
 
 автор: Loki   (28.11.2005 в 22:46)   письмо автору
 
   для: Yuri   (28.11.2005 в 18:49)
 

>*О всех преимуществах MySQL я в курсе*
тогда какие мнения вас интересуют? файлы - быстрее, но мигом потеряете на сортировке и выборке.

   
 
 автор: Shorr Kan   (29.11.2005 в 01:07)   письмо автору
 
   для: Yuri   (28.11.2005 в 18:49)
 

Ну для защиты от совместного доступа - есть специальные функции (flock). А для защиты от скачивания... Лучше защищайте не от скачивания, а от просмотра. Если вы будете хранить все данные в файлах .php , причем там будут добавлены <?...?> - то никакое скачивание вам нестрашно. Грубо говоря, на первой строке файла <? , а на последней - ?> . На всех остальных - данные, и работаете - как с обычными файлами. Пример:

Файл с логинами/паролями

<?
vasya
:vasilenko;petya:petrov;
?>


; - разделитель между пользователями
: - разделитель между логином и паролем.

print substr_count(file_get_contents("file_with_passwords.php")); - выведет вам количество ваших пользователей...

   
 
 автор: Void   (29.11.2005 в 19:03)   письмо автору
 
   для: Shorr Kan   (29.11.2005 в 01:07)
 

<?php
//
// f_datafiles: Скрипт для хранения переменных в текстовых файлах.
// Использует var_export для формирования синтаксически
// правильных файлов и записывает их.
// СКРИПТ НЕ ОТЛАЖЕН. ОПАСЕН ДЛЯ ИСПОЛЬЗОВАНИЯ!
//

// Записать данные в файл
function inc_data_setData($FileName, $FileData) {
$FileStream = fopen(basename($FileName), "w");
fwrite($FileStream, var_export($FileData, TRUE));
fclose($FileStream);
}

// Считать данные из файла
function inc_data_getData($FileName) {
return(eval("return(" . join("", file(basename($FileName))) . ");"));
}
?>

Я это взял из комментов по PHP мануалу. Функцией inc_data_setData пишем в файл, а функцией inc_data_getData считываем его. Плоха только невозможность чтения или записи в один файл нескольких переменных. Но я бы предпочел MySQL за простоту в организации базы.

   
 
 автор: Void   (29.11.2005 в 19:08)   письмо автору
 
   для: Void   (29.11.2005 в 19:03)
 

Так же защитой от просмотра будет служить либо мой метод (при отладке):

if (!isset($IYNTX404)) {
die('Скрипт не рассчитан на вызов извне.');
}

А в главном скрипте следует установить эту переменную.

(При register_globals=on это спасет от лишних проблем)

Но есть проще, дешевле и лучше - .htaccess.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования