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

Форум PHP

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

 

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

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

тема: Формирование заголовка с участием базы данных и файловой системы - что быстрее?
 
 автор: Лена   (08.12.2008 в 13:58)   письмо автору
 
 

Как вы думаете, что будет работать быстрее, 1 или 2:
1. Залезть в базу, взять заголовок: 2008-12-08_Название статьи и с помощью регулярных выражений отсечь цифры в начале заголовка.
2. Залезть в базу, вытянуть данные про текст(id, заголовок), найти на диске соответствующий файл, раскрыть его и выдернуть заголовок.

  Ответить  
 
 автор: Zend72   (08.12.2008 в 14:01)   письмо автору
 
   для: Лена   (08.12.2008 в 13:58)
 

Первое. Или спроектировать нормальную базу где заголовок и дата в отдельных полях таблици храняться...

  Ответить  
 
 автор: elenaki   (08.12.2008 в 14:08)   письмо автору
 
   для: Лена   (08.12.2008 в 13:58)
 

зачем тут регулярные выражения? 11 символов с начала строки можно отрезать функцией substr()

  Ответить  
 
 автор: AcidTrash   (08.12.2008 в 15:04)   письмо автору
 
   для: Лена   (08.12.2008 в 13:58)
 

elenaki здесь права, зачем лишнее телодвижение и РВ.
substr() В вашем случае, как раз то что надо.
<?php
$t
="2008-12-08_Название статьи";
$t=substr($t,11);
print 
$t;
?>

  Ответить  
 
 автор: sim5   (08.12.2008 в 15:28)   письмо автору
 
   для: AcidTrash   (08.12.2008 в 15:04)
 

Прав Zend72.

  Ответить  
 
 автор: AcidTrash   (08.12.2008 в 15:33)   письмо автору
 
   для: sim5   (08.12.2008 в 15:28)
 

Это понятно, но в данном случае, как есть, то права elenaki :)
А вот насчет советов как оптимальнее, то не спорю.

  Ответить  
 
 автор: Лена   (08.12.2008 в 22:54)   письмо автору
 
   для: AcidTrash   (08.12.2008 в 15:33)
 

За substr() спасибо. Только она мне немного в другом понадобилась :)
Решила последовать совету Zend и sim5. Отделила дату от заголовка, сделала отдельные поля.
Только пришлось в базе перекинуть старые данные, но уже исправленные, в новое поле в таблице:

UPDATE texts SET main_text_ = SUBSTRING(main_text, 12) WHERE id NOT BETWEEN 1 AND 17


А папках, где у меня лежали файлы типа 2008-12-08_Название статьи.txt, пришлось тоже обрезать первые цифры, чтобы название совпадало с заголовком в базе:

<?php
function direct($dir){
if(!(
$dp=opendir($dir))) die ("Невозможно открыть каталог $dir");
while (
false !== ($file=readdir($dp))){
    if (
is_dir($dir "/" .$file)) {
        if (
$file!='.' && $file!='..' && $file!='menu' && $file!='contact'){
        
direct($dir "/" .$file);
        }
    }
    else{
        
$a substr($file,11);
        
rename($dir "/" $file$dir "/" $a);
    }
}
closedir ($dp);
}
$d 'content/';
direct($d);
?>

Теперь все, как и надо. Спасибо всем.

  Ответить  
Rambler's Top100
вверх

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