В общем есть следующая проблема. Есть скрипт на питоне которому передаются 3 файла и он делает на их основе четвертый(если быть откровенным то это просто подпись файла, тобеж 1 это файл сертификата 2 это файл ключей а 3 это тот фйл который мы подписываем). Собственно есть дилемма, как лучше отдать 4 файл пользователю(как будет правильнее)? Вы наверно спросите причем тут пхп, дело в том что сайт написан на пхп и думаю так будет проще кое какие варианты реалиовать. Я вижу пару варианта. При этом хотелось бы(я бы даже сказал ооочень хотелось, так как это облегчит в будущем мне жизнь, хранить сертификат и ключ в базе а не в отдельных файлах ). 1) Сертификат и ключ храним не в базе ( ) , а в базе просто храним путь до них. через passthru в php мы запускаем скрипт на питоне а скрипт правим так чтобы он делал вывод не в файл а на стандартный поток вывода. Тут соответственно + в том что это все довольно просто в реализации. Но вот насколько это грамотно(имееться ввиду запуск через passthru скрипта) 2) Вариант близкий к идеальному но не не совсем ) Мы просто разрешаем исполнение python скриптов на сайте(честно некогда не подключал питон на сайтах но думаю это не проблема, и если все таки подключать. тут наверно лучше как cgi приложение его подключать, ведь этот python скрипт будет не часто вызываться), и в самом скрипте на питоне подключаться к базе забирать из нее сертификат и ключ подписывать файл и отдавать ссылку на файл пользователю. Тут не идельно вот что. Насколько питон нормально работает с mysql? )) 3) Вариант мы питон скрипту через параметры передаем сертификат и ключ подписываем приложение и дальше схоже с 1 вариантом. Тут + в том что сертификат и ключ хранятся как и хотелось бы, в базе. 4 Некая комбинация 1-3 варианта? 5 ваши предложения ? ЗЫ файлы которые мы будем отдавать и подписывать будут в среднем 1-3мб максимум 8-10 мб
Честно говоря смутно понял что это такое - понял только что из пхп нужно вызвать питон - срипт. Это изврат. Уж лучше на питоне написать какого-то демона (естественно, при условии что это вдс/впс/дед в противном случае это маразм). Подключение питона не так просто как кажется. Там хватает подводных камней. Насчет работы с БД - есть такая вещь как SQLalchemy, она все твои вопросы по поводу БД решит. Или переписать питон скрипт на пхп.
Чесно полностью согласен что это изврат НО Это конечно возможно НО переписывать около 2,5к строк с питона на пхп занятие для еще больших извращенцев )) Собстенно непонятно а причем тут демон. Грубо говоря совсем упрощая. Мне надо отдать пользователю файл после обработки его тем питон скриптом. А то что я описывал было мои идеи по решению той проблемы. Да действия будут происходить на ВДС
Просто можно написать демона который будет проверять постоянно с заданным интервалом (ну положим там в секунду или пол секунды) БД на наличие задач по сертификации или что там. И потом обратно ложить в БД сертфицированный файл, а пхп же будет просто в БД ложить запрос на эту саму сертификацию, а потом через заданный интервал проверять БД на наличие ответного файла Под демоном подразумеваю скрипт, просто работающий себе на вдс , которого никто не трогает P.S. Я за четкое разделение задач. P.P.S. Какая предполагается пиковая нагрузка ? P.P.P.S. Свалил спать, буду завтра читать
Демон не получиться по той причине что 1) Нужно отдать файл по запросу пользователя. 2) Подпись файла делается моментально(ну время выполнения скрипта на питоне менее 1 сек) 3) Выекает из 1. Пользователь может запросить на подпись любой файл любым своим сертефикатом. Тоесть подписать все файлы одним сертом и складировать их неполучиться. Итог. Запрос пользователся (имя файла+выбранный серт)=> (Както подписывам) => както отдаем файл пользвателю. )) Собственно а где подводные камни зарыты при подключении питона к апатчу? Пиковая нагрузка ну думаю что 1-2 файла на подпись в минуту МАКСИМУМ ))
Вот вам бы тут необходимо почитать. http://habrahabr.ru/blogs/python/67475/#habracut Подозреваю, что в планируете использовать mod_python. Посмотрите тесты, почитайте, сделайте выводы. В принципе с вашей предполагаемой нагрузкой то вам оно до жопы. Вам его как угодно можно подключить. Я предполагал нагрузку поболее. P.P.S. Предлагаю маразм еще круче - переписать сайт на Python
нет сама посебе нагрузка на сайт будет. А это грубо говоря некая предоставляемая услуга на сайте. Щас почитаю что на хабре пишут. ЗЫ Да переписывать DLE(который я и так переделываю под свои нужды) на питон это сильно ))
через http протокол можно. php скрипт посылает следующие заголовки: PHP: header('Content-Type: application/force-download'); header('Content-Type: application/octet-stream'); header('Content-Type: application/download'); header('Content-Transfer-Encoding: binary'); header('Content-Disposition: attachment; filename="4file.txt"'); и браузер предлагает скачать 4-й файл
imajo.ati, Это и так понятно. щас это та и живет. И я непрошу подсказывать как написать код )) Код я и сам могу написать. Меня интересует только сама идея(а точнее как это лучше/правильнее сделать) Проблема тут комплексная. О_о а зачем лишний раз грузить сервак упаковкой файла если можно и тк отдать без упаквки. Вся проблема сводиться насамом деле вот к чему. Передача питон скрипту в параметрах файл/петь к файлу. В общем либо передавать скрипту на питоне пути к файлу. но это нехотелось бы поскольку просто будет захламелн винт тупо файлами размером в 2 кб. Хотелось бы просто питон скрипту передать первый и 2 файл(тобеж сертификат и ключ) как просто строки параметров обжатых в base64. Но тут встает пороблемма а Насколько длинные команды можно передать через командную строку )) Просто оочень нехочеться хранить сертефикат и ключ в файлах а хотелось бы их в базе Хотя может вы меня переубедите(и да я знаю что базы для ханения файлов неподходят) Но строчку размером в пару кб мне както не тянет назвать файлом. Хотя может я и неправ. Или всетаки не париться и хранить сертификаты просто как файлы. в базе пути до них и запускать питон скрипт просто указывая пути до них? Тогда может нестоит делать бинарный вывод на питон скрипте, а просто сохранять файл и отдавать линк на скачку преобразователям. И через час удалять этот файл?
Ну какбы это понятно что шаред мемори. НО как этим пользоваться для обмена между питон скриптом и пхп