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

Форум PHP

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

 

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

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

тема: Принудительно порвать строку и нагрузка на серв
 
 автор: Whi-teOoS   (08.02.2007 в 15:21)   письмо автору
 
 

Дабы нельзя было убить дизайн строкой в 100000 символов без пробелов (да ващет и 300 хватит) надо порвать строку.

Собственно я делаю так:

    function WWT($Str) // WorkWithText
    {
/*
$Str='PHP_поддерживает_концепцию_переменных_функций._Это_означает,_что_если_к_имени_переменной_присоединены_круглые_скобки,
PHP_ищет_функцию_с_тем_же_именем,_что_и_результат_вычисления_переменной,_и_пытается_ее_выполнить._Эту_возможность_можно_использовать_для_реализации_обратных_вызовов,_таблиц_функций_и_множества_других_вещей.';
*/
        $StrLn=strlen($Str);
        if($StrLn>($this->MaxWordLength)*2)
        {
            $StrEnt = explode(chr(13),$Str);
            for($i=0;$i<count($StrEnt);$i++)
            {
                $StrErr=true;
                while($StrErr==true)
                {
                    $StrErr=false;
                    $StrSps=explode(" ",$StrEnt[$i]);
                    for($j=0;$j<count($StrSps);$j++)
                    {
                        if(strlen($StrSps[$j])>($this->MaxWordLength)*2)
                        {
                            $t1=substr($StrSps[$j],0,$this->MaxWordLength);
                            $t2=substr($StrSps[$j],$this->MaxWordLength);
                            $StrSps[$j]=$t1." ".$t2;
                            $StrErr=true;
                        }
                    }
                    $StrEnt[$i]=implode(" ",$StrSps);
                }
                //print_r ($StrSps);
            }
            $Str=implode(chr(13),$StrEnt);
            //print_r ($StrEnt);
        }
        return $Str;
    }



var $MaxWordLength = 10


Но чет меня терзают смутные сомненья, что сее сильно грузит серв, да и выполняется мягко говоря не очень быстро.
Как можно сделать проще?



Ну и сразу добавлю вопросик (дурная привычка спрашивать все и сразу)
допустим есть нсколько... ну назовем их модули.
каждый представляет из себя 2 файла: описание класса, его инициализация (можно сделать в одном, не в этом вопрос)
допустим их 25.
сильно ли загрузит серв и выполнение скрипта, если я создам класс в котором инициализирую их все и потом include it on mainpage?
тобишь получится я вызываю объекты не по мере их надобности а все сразу и потом уже свободно с ними работаю.

   
 
 автор: ZuArt   (08.02.2007 в 16:03)   письмо автору
 
   для: Whi-teOoS   (08.02.2007 в 15:21)
 

А может так?


$str='PHP_поддерживает_концепцию_переменных_функций._Это_означает,_что_если_к_имени_переменной_присоединены_круглые_скобки,
PHP_ищет_функцию_с_тем_же_именем,_что_и_результат_вычисления_переменной,_и_пытается_ее_выполнить._Эту_возможность_можно_использовать_для_реализации_обратных_вызовов,_таблиц_функций_и_множества_других_вещей.';
$arr = WWT($str, 40);

function WWT($str, $len) // WorkWithText
{
 preg_match_all("/[a-z0-9_а-яё]{".$len."}/i", $str, $arr);
 return $arr[0];



в конечном итоге имеешь массив строк определенной длины... выводи поэлементно

   
 
 автор: bronenos   (08.02.2007 в 16:16)   письмо автору
 
   для: ZuArt   (08.02.2007 в 16:03)
 

$text = chunk_split ($text, 60, '<br>');

   
 
 автор: ZuArt   (08.02.2007 в 16:39)   письмо автору
 
   для: bronenos   (08.02.2007 в 16:16)
 

выше приведенный мной пример не учитывает некоторых нюансов... в общем есть бааальшие недочеты - можно ток как за отправную точку взять.

$text = chunk_split ($text, 60, '<br>'); - тогда если есть пробелы в строке - они будут проигнорированы... как-то нехорошо =(((

тогда уж сначала рубить по строкам а потом собирать

function WWT($str, $len) // WorkWithText
{
 $ret = '';
 preg_match_all("/\s*(\S+)\s*/", $str, $tmp); 
 foreach($tmp[0] as $key => $val)
  $tmp[0][$key] = chunk_split ($val, $len, '<br>');
 $ret = implode('<br>', $tmp[0]);
 return $ret;

   
 
 автор: Whi-teOoS   (08.02.2007 в 17:21)   письмо автору
 
   для: ZuArt   (08.02.2007 в 16:03)
 

ZuArt, пасиба, ща попробую.
А можешь дать линк на ман по прегам? Чет нормального найти не могу.

   
 
 автор: Trianon   (08.02.2007 в 19:17)   письмо автору
 
   для: Whi-teOoS   (08.02.2007 в 17:21)
 

http://softtime.ru/article/index.php?id_article=62
http://softtime.ru/dic/id_dic=134&id_group=3

   
 
 автор: ZuArt   (09.02.2007 в 09:40)   письмо автору
 
   для: Whi-teOoS   (08.02.2007 в 17:21)
 

Еще тут есть маленько
http://softtime.ru/group/id_group=3
а подробно по функциям на знаменитом http://php.ru/manual/ref.pcre.html

   
 
 автор: Whi-teOoS   (09.02.2007 в 15:21)   письмо автору
 
   для: ZuArt   (09.02.2007 в 09:40)
 

Всем пасиб.



А по поводу второго вопроса:


допустим есть несколько... ну назовем их модули.
каждый представляет из себя 2 файла: описание класса, его инициализация (можно сделать в одном, не в этом вопрос)
допустим их 25.
сильно ли загрузит серв и выполнение скрипта, если я создам класс в котором инициализирую их все и потом include it on mainpage?
тобишь получится я вызываю объекты не по мере их надобности а все сразу и потом уже свободно с ними работаю.


Просто интересно как это скажется при большом количестве одновременных посещений...

Да и вообще хотелось бы сразу уточнить какие факторы сказываются на загруженность серва?

   
 
 автор: ZuArt   (09.02.2007 в 15:48)   письмо автору
 
   для: Whi-teOoS   (09.02.2007 в 15:21)
 

По сути, смотря как отдаются данные в браузер... если просто идет echo "..." или подобные функции (наполнение выходного потока) без flush() - отдать из потока данные браузеру, то особой разницы не будет ни при последовательной подгрузке модулей, ни при разовой...

есть какая-то разница между include и еще одной ф-ей (не помню точно) - функционал почти одинаоквый, но есть разница по способу включения модулей... на них можно сыграть...

еще тут играет роль то, что скрипт с разовым включением модулей будет сразу есть память сервака, а последовательный будет по мере работы откусывать =)))

а вообще, если необходимый минимум лучше грузить сразу, а остальное по мере необходимости =) - имхо - это мое субьективное мнение

   
 
 автор: Whi-teOoS   (09.02.2007 в 18:35)   письмо автору
 
   для: ZuArt   (09.02.2007 в 15:48)
 

Спасиб.

   
Rambler's Top100
вверх

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