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

Форум MySQL

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

 

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

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

тема: Что лучше использовать в плане производительности функции php или функции mysql?
 
 автор: antf   (16.01.2012 в 00:44)   письмо автору
 
 

Здравствуйте.
Что лучше использовать в плане производительности функции php или функции mysql в случае, когда задачу можно решить двумя способами? Например, как лучше обрезать строку mysql-функцией SUBSTRING или php-функцией substr?

  Ответить  
 
 автор: Valick   (16.01.2012 в 00:55)   письмо автору
 
   для: antf   (16.01.2012 в 00:44)
 

с связке с MySQL язык РНР нужно использовать по возможности только для вывода результатов выборки, весь функционал программы нужно перекладывать на плечи СУБД
грубо говоря при программировании с использованием MySQL нужно вообще забыть про РНР и учиться заново программировать
естественно функции MySQL быстрее

  Ответить  
 
 автор: cheops   (16.01.2012 в 01:26)   письмо автору
 
   для: antf   (16.01.2012 в 00:44)
 

Вообще лучше, конечно, MySQL... только постарайтесь сократить выборку, чтобы SUBSTRING() применялся не ко всей таблице, т.е. исключить его из WHERE-конструкции, а то не известно как повернется на деле, может будет и в PHP проще отрезать.

  Ответить  
 
 автор: antf   (16.01.2012 в 01:58)   письмо автору
 
   для: cheops   (16.01.2012 в 01:26)
 

А можно с помощью mysql решить такую задачу? Если длина сообщения больше 300 символов, надо обрезать его и поставить в конце троеточие.


<?php
  
if(mb_strlen($message'utf-8') > 300)
    
$message mb_substr($message0300'utf-8').'...';
?>

  Ответить  
 
 автор: antf   (16.01.2012 в 02:17)   письмо автору
 
   для: antf   (16.01.2012 в 01:58)
 

Сам дошел, но громоздко.

SELECT fromu.fio as from_fio,
                   fromu.photo,
                   m.*,
                   IF(LENGTH(m.message) > 300, CONCAT(SUBSTRING(message, 1, 300),'...'), message) as message,
                   DATE_FORMAT(m.date, '%d %b %Y %H:%i') as date_frm
              FROM {$gl_db_prefix}messages as m,
                   {$gl_db_prefix}users as fromu
             WHERE m.to_id_user = {$id_user}
               AND m.from_id_user = fromu.id_user

  Ответить  
 
 автор: .....   (16.01.2012 в 05:21)
 
   для: antf   (16.01.2012 в 02:17)
 

примерно так по пробелу можно сделать
INSERT( m.message, (LOCATE(' ', m.message, 300)), -1
        , ' ...<a href=".........">читать дальше</a>')  AS message
но иногда в данных переносы строк вместо пробелов

  Ответить  
 
 автор: antf   (31.01.2012 в 10:55)   письмо автору
 
   для: .....   (16.01.2012 в 05:21)
 

Если содержимое столбца descr превышает 300 символов, тогда описание проекта режется не посередине слова, а на пробеле. Причем этот пробел находится дальше указанной длины строки.

SELECT *,
IF(LENGTH(descr) > 300, CONCAT(SUBSTRING(descr, 1, IF(LOCATE(' ', descr, 300), LOCATE(' ', descr, 300) - 1, 300)),'...'), descr) as descr
FROM projects
ORDER BY date DESC";


Работает, но код забористый получается :)

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

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