Мы используем lua для похожих целей, писали свой XS враппер, т.к. в выражениях на lua нужен был доступ к собственным XS-объектам. Работает хорошо, настолько хорошо, что пока даже luajit не потребовался.
Перед тем, как внедрить lua, рассматривали альтернативные варианты: * Чисто-перловый вариант типа Language::Expr или Math::Expression::Evaluator, но очень медленно для наших нужд * Safe - отпал сразу, т.к. медленный и синтаксис полученных выражений странный для тех, кто не знает перл * Различные библиотеки типа ExprEval или MathPresso - они вероятно хороши, но мы хотели оставить возможность использовать условия и потенциально производить какие-то действия, поэтому взяли полноценный язык. Кстати, если скорость не очень важна, то возможно именно первый вариант и окажется подходящим? 2014-03-15 16:56 GMT+04:00 Nick Knutov <[email protected]>: > В некотором биллинге (он на перле) надо задать функцию для подсчета цены > в зависимости от некоторых внешних переменных. > > Эта функция должна быть простым текстом и редактироваться в админке > простыми людьми (т.е. делать её например хранимой процедурой в БД не > получится). > > Биллинг её должен запускать в изолированном контексте (редактрируют её > простые люди, а безопасность важна), без отдельного форка, имея на вход > массив/хеш с переменными и получать такой же ответ. Работа этой функции > может быть не очень быстрой, хайлоада нет. > > Я не хочу писать очередной микро-псевдно-язык. Вопрос - можно ли для > этих целей использовать LUA и если это хорошая идея - то как именно? > Lua::API? Inline::Lua? А может PHP::Interpreter? ) > > Сущность самой функции - математические вычисления на основе входных > параметров. Будет лучше, если ей внутри будут доступны всякие > математические функции для среднего и округлений, но весьма желательно > иметь возможность запретить всё остальное, особенно трогать файлы и > делать внешние хттп запросы. > > Как еще можно/лучше решить эту задачу? > > -- > Best Regards, > Nick Knutov > http://knutov.com > ICQ: 272873706 > Voice: +7-904-84-23-130 > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org -- Vladimir Timofeev <[email protected]> -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
