
Итак, решил открыть новую серию постов о программировании. Так как часто в процессе работы дорвейщики сталкиваются с совершенно нестандартными задачами, то описание их решения избавит многих от длительных часов перебирания литературы и извращениями над кодом.
Этот пост я хочу написать о самом простом варианте взаимодействия php с python. Довольно часто многие заставляют бедный php выполнять ресурсоёмкие вычисления, задачи, которые по-идее он не должен выполнять. Некоторые даже извращаются с многопоточностью на питон, со всякими мультикурлами и т.д. А можно всё сделать намного проще – отдать на обработку данные самой системе, а не апачу. У системы нет ограничений на использование ресурсов, да и апач штука сама по себе медлительная. В качестве языка работы с системой я использую python. Он мультиплатформенный, довольно быстрый, и по нему много хорошей документации + большое количество хорошо сделанных классов для облегчения работы. Итак, для того, чтобы показать как это всё работает нам понадобится два файла – test.php и test.py
- <?
- echo $output;
- ?>
- #!/usr/bin/python
- import sys
- args = sys.argv
- link = args[1]
- linktext = args[2]
- print "<a href='"+link+"'>"+linktext+"</a>"
Как видно из кода – мы просто вызываем системную команду, и передаём ей несколько параметров, а скрипт эти параметры обрабатывает и выводит ссылку(для примера). Как-нибудь позже я покажу как работать со связкой Ajax + PHP + Python, когда придумаю какой-нибудь более-менее интересный пример. PHP функция passthru выполняет системную команду и возвращает полый её вывод. Python функция sys.argv принимает все параметры, переданные скрипту в командной строке, и возвращает их в скрипте в виде массива. Нулевой элемент – имя скрипта, которому были переданы параметры, поэтому в программе мы начали работать с элемента под номером 1.
Нашёл в интернете компилятор электронных книг, нужна штука иногда!