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

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

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

Этот пост я хочу написать о самом простом варианте взаимодействия 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 Комментариев: 3

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

No comments yet. Be the first to leave a comment !
Leave a Comment

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


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