Взаимодействите python и php без дополнительных модулей

Категории: Программирование Комментариев: 4

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

Этот пост я хочу написать о самом простом варианте взаимодействия php с python. Довольно часто многие заставляют бедный php выполнять ресурсоёмкие вычисления, задачи, которые по-идее он не должен выполнять. Некоторые даже извращаются с многопоточностью на питон, со всякими мультикурлами и т.д. А можно всё сделать намного проще – отдать на обработку данные самой системе, а не апачу. У системы нет ограничений на использование ресурсов, да и апач штука сама по себе медлительная. В качестве языка работы с системой я использую python. Он мультиплатформенный, довольно быстрый, и по нему много хорошей документации + большое количество хорошо сделанных классов для облегчения работы. Итак, для того, чтобы показать как это всё работает нам понадобится два файла – test.php и test.py

test.php   
  1. <?
  2. $output = passthru ("python test.py 'http://aboutdoorways.com' 'Link text'");
  3. echo $output;
  4. ?>
test.py   
  1. #!/usr/bin/python
  2. import sys
  3. args = sys.argv
  4. link = args[1]
  5. linktext = args[2]
  6. print "<a href='"+link+"'>"+linktext+"</a>"

Как видно из кода – мы просто вызываем системную команду, и передаём ей несколько параметров, а скрипт эти параметры обрабатывает и выводит ссылку(для примера). Как-нибудь позже я покажу как работать со связкой Ajax + PHP + Python, когда придумаю какой-нибудь более-менее интересный пример. PHP функция passthru выполняет системную команду и возвращает полый её вывод. Python функция sys.argv принимает все параметры, переданные скрипту в командной строке, и возвращает их в скрипте в виде массива. Нулевой элемент – имя скрипта, которому были переданы параметры, поэтому в программе мы начали работать с элемента под номером 1.

Нашёл в интернете компилятор электронных книг, нужна штука иногда!

Автор inlanger   @   3.01.2010 Комментариев: 4
Комментарии
Author Jan 3, 2010
17:46
#1 inlanger :

Конечно в состоянии! Но вот только на сам апач нужно нужно собрать модуль и установить его. А мой вариант из разряда "взял и пользуйся".

Jan 3, 2010
17:50
#2 rushter :

Однопоточный можно силами python поднять,в django есть такой скриптик.

Author Jan 4, 2010
09:27
#3 inlanger :

django это уже целый фреймворк, это явно не лёгкий и быстрый способ, а первую часть я не понял )

Jan 11, 2012
05:06
#4 Виталий :

Спасибо, то что нужно. А другие мыслят слишком шаблонно.

Leave a Comment

Следущая запись
«
Предыдущая запись
»


Zionn designed by ZENVERSE  |  In conjunction with Reseller Hosting from the #1 Web Hosting Provider - HostNexus.