Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   PHP and Python (https://forum.antichat.xyz/showthread.php?t=157819)

EST a1ien 19.11.2009 22:54

PHP and Python
 
В общем есть следующая проблема.
Есть скрипт на питоне которому передаются 3 файла и он делает на их основе четвертый(если быть откровенным то это просто подпись файла, тобеж 1 это файл сертификата 2 это файл ключей а 3 это тот фйл который мы подписываем).
Собственно есть дилемма, как лучше отдать 4 файл пользователю(как будет правильнее)?
Вы наверно спросите причем тут пхп, дело в том что сайт написан на пхп и думаю так будет проще кое какие варианты реалиовать.
Я вижу пару варианта. При этом хотелось бы(я бы даже сказал ооочень хотелось, так как это облегчит в будущем мне жизнь:), хранить сертификат и ключ в базе а не в отдельных файлах ).
1) Сертификат и ключ храним не в базе ( :( ) , а в базе просто храним путь до них.
через passthru в php мы запускаем скрипт на питоне а скрипт правим так чтобы он делал вывод не в файл а на стандартный поток вывода.
Тут соответственно + в том что это все довольно просто в реализации. Но вот насколько это грамотно(имееться ввиду запуск через passthru скрипта)
2) Вариант близкий к идеальному но не не совсем )
Мы просто разрешаем исполнение python скриптов на сайте(честно некогда не подключал питон на сайтах но думаю это не проблема, и если все таки подключать. тут наверно лучше как cgi приложение его подключать, ведь этот python скрипт будет не часто вызываться), и в самом скрипте на питоне подключаться к базе забирать из нее сертификат и ключ подписывать файл и отдавать ссылку на файл пользователю.
Тут не идельно вот что. Насколько питон нормально работает с mysql? ))
3) Вариант мы питон скрипту через параметры передаем сертификат и ключ подписываем приложение и дальше схоже с 1 вариантом.
Тут + в том что сертификат и ключ хранятся как и хотелось бы, в базе.
4 Некая комбинация 1-3 варианта?
5 ваши предложения ?

ЗЫ файлы которые мы будем отдавать и подписывать будут в среднем 1-3мб максимум 8-10 мб

login999 19.11.2009 23:49

Цитата:

Сообщение от EST a1ien
В общем есть следующая проблема.
Есть скрипт на питоне которому передаются 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, она все твои вопросы по поводу БД решит. Или переписать питон скрипт на пхп.

EST a1ien 20.11.2009 00:09

Цитата:

Честно говоря смутно понял что это такое - понял только что из пхп нужно вызвать питон - срипт. Это изврат.
Чесно полностью согласен что это изврат НО
Цитата:

....переписать питон скрипт на пхп.
Это конечно возможно НО переписывать около 2,5к строк с питона на пхп занятие для еще больших извращенцев ))
Цитата:

Уж лучше на питоне написать какого-то демона (естественно, при условии что это вдс/впс/дед в противном случае это маразм).
Собстенно непонятно а причем тут демон.
Грубо говоря совсем упрощая.
Мне надо отдать пользователю файл после обработки его тем питон скриптом. А то что я описывал было мои идеи по решению той проблемы.

Да действия будут происходить на ВДС

login999 20.11.2009 00:24

Просто можно написать демона который будет проверять постоянно с заданным интервалом (ну положим там в секунду или пол секунды) БД на наличие задач по сертификации или что там. И потом обратно ложить в БД сертфицированный файл, а пхп же будет просто в БД ложить запрос на эту саму сертификацию, а потом через заданный интервал проверять БД на наличие ответного файла
Под демоном подразумеваю скрипт, просто работающий себе на вдс , которого никто не трогает :)
P.S. Я за четкое разделение задач.
P.P.S. Какая предполагается пиковая нагрузка ?
P.P.P.S. :D Свалил спать, буду завтра читать :)

EST a1ien 20.11.2009 00:48

Демон не получиться по той причине что
1) Нужно отдать файл по запросу пользователя.
2) Подпись файла делается моментально(ну время выполнения скрипта на питоне менее 1 сек)
3) Выекает из 1. Пользователь может запросить на подпись любой файл любым своим сертефикатом.
Тоесть подписать все файлы одним сертом и складировать их неполучиться.

Итог. Запрос пользователся (имя файла+выбранный серт)=> (Както подписывам) => както отдаем файл пользвателю. ))

Собственно а где подводные камни зарыты при подключении питона к апатчу?

Пиковая нагрузка ну думаю что 1-2 файла на подпись в минуту МАКСИМУМ ))

login999 20.11.2009 11:27

Вот вам бы тут необходимо почитать.
http://habrahabr.ru/blogs/python/67475/#habracut
Подозреваю, что в планируете использовать mod_python.
Посмотрите тесты, почитайте, сделайте выводы.
В принципе с вашей предполагаемой нагрузкой то вам оно до жопы.
Вам его как угодно можно подключить.
Я предполагал нагрузку поболее.

P.P.S. Предлагаю маразм еще круче - переписать сайт на Python :D

EST a1ien 20.11.2009 11:41

нет сама посебе нагрузка на сайт будет.
А это грубо говоря некая предоставляемая услуга на сайте.
Щас почитаю что на хабре пишут.
ЗЫ
Цитата:

P.P.S. Предлагаю маразм еще круче - переписать сайт на Python
Да переписывать DLE(который я и так переделываю под свои нужды) на питон это сильно ))

LEE_ROY 20.11.2009 11:56

вам на free-lance.ru и подобные

EST a1ien 20.11.2009 11:59

Цитата:

вам на free-lance.ru и подобные
Это к чему пост?

imajo.ati 20.11.2009 18:59

Цитата:

Собственно есть дилемма, как лучше отдать 4 файл пользователю(как будет правильнее)?
через 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-й файл


Время: 11:36