Еще один из очевидных способов использования лиспа в веб-программировании
- это "гонять аналитику по базе", что, по-видимому, на большинстве задач
будет быстрее чем использование для этих целей php с присущими ему
ограничениями по памяти и времени исполнения скрипта. Таким образом схема
взаимодействия получается такой:
+----------------------+ +--------------------+
| process: apache2 | | process: sbcl |
| +-----------+ +---------+----------+
| | mod_php +---+ +---+ my.lisp | |
+----------+-----------+ | | +---------+----------+
| |
v v
------------------------
( mysql )
------------------------
Чтобы работать с mysql (postgress, etc...) из лиспа я использвал
библиотеку CLSQL (
http://clsql.b9.com/) которую нужно скачать,
скомпилить и подключить так, как написано в документации.
Вот типичный пример подключения к базе данных и выполнения запроса:
(clsql:connect '("localhost" "dbname" "root" "") :database-type :mysql)
(clsql:query "select first_name,last_name from people where id = 1")
(disconnect :database (find-database "localhost/dbname/root"))
На самом деле библиотека довольно интересна и предоставляет много
различных вариантов доступа к базе данных, например с помощью FDML
(Functional Data Manipulation Language):
(clsql:insert-records
:into [employee]
:attributes '(first_name last_name email)
:values '("Yuri" "Gagarin" "gagarin@soviet.org" ))
или OODML (Object Oriented Data Manipulation Language) с которым я
пока еще не разбирался, но по-видимому он реализует ORM, и этот ОRM
выглядит гораздо вменяемее чем все что я видел до сих пор (может мало
видел просто :)
В целом, это подход (связывание php и lisp с помощью mysql) наверно
самое быстрое что можно придумать - меньше всего времени на изучение,
и работать можно начинать почти сразу. Следующий пост будет о более
прогрессивной схеме взаимодействия, которую предложил dark_aurel.