include vs eval

Фанат

oncle terrible
Команда форума
Пошел считать в процентах всё и вся.
Только, конечно, не микротаймом в скрипте.
а затраты веб-сервера тоже не забудь.

-~{}~ 15.09.04 22:27:

Не тормози, эвалом я объявляю функции
Да, это я торможу, несомненно.
Спросил, какой выиграш в производительности дает евал, а мне рассказывают, что на запросах - в два раза.

Сегодня на форуме вечер открытых дверей. Не будем говорить, для кого.
 

che

Guest
Originally posted by Фанат
Да, и реальный прирост производительности тоже интересно узнеть.
Не эти ламерские циферки, а реально, в процентах от общеих затрат на обработку запроса.
Слово запрос вижу. Слово eval не вижу. А теперь расскажи мне где спрашивал какой выиграш в производительности дает евал. Чой то я не нашел. :D
 

Фанат

oncle terrible
Команда форума
Если ты не можешь самостоятельно сообразить, что раз ты пришел сюда рассказывать про евал, то я и спрашиваю тебя про него, то поясняю - запросы бывают не только SQL, но и HTTP.
Какие еще будут вопросы?
Как тестировать?
Берешь утилиту ab, из состава веб-сервера Апач и эмулируешь реальную нагрузку.
И смотришь,сколько запросов в минуту сможет обработать тот и другой вариант.
 

Oleg Marchuk

Человек
che
Стоит не везде, да и как они будут кэшировать результаты SQl запросов, данные? Про кеширование на стороне SQL сервера не надо, в курсе. Но зачем лишнее обращение если всю работу скрипта можно свести к 2-3 чтениям файлов? Даже если в нем куча инклудов и запросов к базам?
Smarty, AdoDB можно использовать везде.
 

vitus

мимо проходил
ну раз пошла такая пьянка, тогда я тоже участвую :)

никто спорить не станет что пакеты классов от другого проекта не всегда можно пользовать сразу без модификации,
(два класса с одинаковым именем подерутся) так вот :) тут- то эвал нас и спасёт :
PHP:
<?php 

class ClassByName{ 
    var $name; 
     
    function classbyname($classname){ 
        //тут найти файл с классом 
        //препарировать его 
        //создать из полученного препарата ;) 
        eval("class $classname{ 

                 function $classname(\$init){ 
                    echo get_class(\$this); 
                    echo \"<br> \$init\"; 
                 } 
              }" 
            ); 
    } 

} 

    new classByName("com_phpBeans_className"); 

    $yo=new com_phpBeans_className("иницыйируйся!"); 
?>
- дурь конечно :) но ведь парсят же темплеты , почему бы и код не попарсить ? :)

-~{}~ 16.09.04 11:46:

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

Фанат

oncle terrible
Команда форума
да насчёт кэширования результатов запросов
извините, я все никак не могу понять - а откуда в этой теме всплыло кэширование результатов SQL-запросов?
Вопрос риторический, отвечать не надо.
А надо задуматься о том, что вы пишете, и куда.

-~{}~ 16.09.04 11:51:

vitus
тут- то эвал нас и спасёт :
Вас, может быть, и спасет. "Разработчиков" по методу "натырить по-быстрому готового кода, сляпать, забрать бабки, и свалить".
А вот человек, которому придется, не дай бог, поддерживать этот проект, наплачется горючими слезами.
 

vitus

мимо проходил
;) интересно, почему-то я никогда не плакал когда пользовался jdbc например :)
типа настоящий программер никогда не использует чужой код чтоли?
тада уж сразу модуль к апачу писать надо, а ещё лучше - купил компутер - напиши операционку :)

-~{}~ 16.09.04 12:45:

Originally posted by Фанат
"натырить по-быстрому готового кода, сляпать, забрать бабки, и свалить"
- интересная мысль, надо попробовать :)
 

che

Guest
Originally posted by Фанат
Если ты не можешь самостоятельно сообразить, что раз ты пришел сюда рассказывать про евал, то я и спрашиваю тебя про него, то поясняю - запросы бывают не только SQL, но и HTTP.
Помнится я тогда рассказал тебе за евал и SQL запросы и уже после этого ты употребил слово запрос. Дело в том что во время разговора вопрос как правило задается в контексте последней реплики. Если ты после упоминания SQL запросов имеешь ввиду http запрос, то было бы неплохо это уточнять. Ты так долго учишь людей задавать вопросы, мог бы уже и сам научиться это делать :D

Какие еще будут вопросы?
Как тестировать?
Я у тебя об этом спрашивал? Нет. Так к чему ты это сказал? Ни к чему. Отсюда вывод - высказанное тобой замечание никчемное по определению. Но понять тебя можно. Ты по ходу сам веришь в то, что это кроме тебя никто не умеет. Чтож, флаг тебе в руки, барабан на шею, веник в попу и поезд навстречу. в общем удачи :D

Oleg Marchuk
Когда модули кешируют, это хорошо. Но их ведь еще подключить надо. А это как минимум одно обращение к файлу и парс для каждого из них. А моя идея заключалась в том чтобы сохранять в одном файле результаты работы всего этого множества модулей, что используются в скрипте и пользоваться этими данными для вывода не подключая ничего лишнего. Но это каждый сам себе наверное решает. В моей ситуации это применимо, в чьей то нет. Я же не навязываю.

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

Oleg Marchuk

Человек
che
Есть уже. Можно "кешировать", точнее сохранять работу всех скриптов в статические файлы и их уже отдавать.
JpCache, например, это и предлагает.
 

che

Guest
Originally posted by Oleg Marchuk
che
Есть уже. Можно "кешировать", точнее сохранять работу всех скриптов в статические файлы и их уже отдавать.
JpCache, например, это и предлагает.
Ты имеешь в виду конечную страницу, а я говорю о данных, на базе который оная формируется. Если под разные броузеры формируются разные документы, то данные то одни и теже. Кроме того часть данных возможно вычисляется при каждом заходе, в этом случае особо со статикой не поработаешь. а как я предлагаю, часть данных, которая может кешироваться - кешируется, часть вычисляется каждый раз. Но вообще это уже действительно оффтоп, не будем злить Фантика, он и так чой то недобрый :D
 

Crazy

Developer
Автор оригинала: vitus
;) интересно, почему-то я никогда не плакал когда пользовался jdbc например :)
В чем ты видишь связь между JDBC и предложенной выше схемой?
 

Oleg Marchuk

Человек
che
Опять же, и это уже уже реализовано. Причем значительно лучше. Вот только название на помню :)
 

Фанат

oncle terrible
Команда форума
che
Вопросов к тебе больше не имею.
Как и к результатам твоих доморощенных "тестов".
 

vitus

мимо проходил
Crazy

/*
package,
ClassLoader,
fully qualified class name
*/

JDBC - иллюстрация, драйверы очень удобно цеплять вот так:

Class.forName("my.sql.Driver");

- понятно ?

но это уже полный оффтоп

кстати, я думал что пошутил, реальность оказалась печальной.
 

Crazy

Developer
Автор оригинала: vitus
JDBC - иллюстрация, драйверы очень удобно цеплять вот так:

Class.forName("my.sql.Driver");

- понятно ?
Нет. Непонятно. Ключевая фраза такова: "никто спорить не станет что пакеты классов от другого проекта не всегда можно пользовать сразу без модификации, (два класса с одинаковым именем подерутся) так вот тут- то эвал нас и спасёт".

Не мог бы ты объяснить, каким местом это сюда попадает?
 

vitus

мимо проходил
Crazy
Ключевая фраза была:
Originally posted by vitus
- дурь конечно :) но ведь парсят же темплеты , почему бы и код не попарсить ? :)
а приведённый перед этим код был провокацией, на которую кое кто попался, продемонстрировав что он не читатель, а писатель, и нагородив замечательный бред.
(это был не Crazy).

В приведённом коде (если его читать вместе с комментариями) продемонстрирована принципиальная возможность реализации ClassLoader средствами php, и реализации на его основе конструкций похожих на import и
Class.forName(String fully_qualified_class_name).getInstance(), на мой взгляд очень полезных и более удобных чем
include($filename) при подключении классов и пакетов классов.

Думаю тебе они должны быть знакомы.

Что касается последнего вопроса, то:

Class.forName("my.sql.Driver").getInstance();
Class.forName("your.sql.Driver").getInstance();

вот таким местом это сюда и попадает.
 

Crazy

Developer
vitus, classloader в стиле Java делается на PHP через обычный require_once. Без всяких eval. Если нужно -- могу привести готовый код.

Твой пример с eval подобен скорее не ЗАГРУЗКЕ класса, а ГЕНЕРАЦИИ класса на ходу. Что, мягко говоря, не одно и то же.
 

vitus

мимо проходил
Crazy
Fatal error: Cannot redeclare class myclass ...

- курей не смеши
приведёшь готовый код - возьму слова обратно

-~{}~ 21.09.04 11:39:

и хватит об этом спорить, ещё раз говорю, это была удачная провокация, я реализовывать это не собираюсь и никому не советую, свой круг задач php и так решает.
 

Crazy

Developer
vitus, родной, ты безумно тормозишь. Никто тебя не обещал класслоадер, разрешающий загрузить два одноименных класса -- Java этого тоже не разрешает. :)

Хотя если хочешь -- можешь посмешить курей, положив в classpath два разных класса foo.bar.Buzz и попробовав загрузить оба через Class.forName :)))
 

vitus

мимо проходил
Crazy ну наконец ты понял о чём речь, умничка, а - то я было уже совсем расстроился.
Действительно нигде нельзя загрузить в одной области видимости два одноимённых объекта, и причины тому понятны.

Так о чём мы препирались? Кто тормозит?

-~{}~ 22.09.04 11:12:

если хочется продолжить, кидай в приват, мы тут и так уже намусорили
 
Сверху