使用php连接erlang应用程序

我有一个用PHP构建的网站。
我有一个Erlang应用程序在同一台服务器上作为守护进程运行。 我需要从PHP调用Erlang应用程序上的函数并返回结果。</ p>

我发现了PHP / Erlang和PHP模块,但我无法在此安装PHP模块 服务器,我只能使用PHP代码。</ p>

解决问题的唯一方法就是在本地运行一个PHP能够与之交谈的Erlang Web服务器。</ p> \ n

有没有更好的解决方法?
如果使用httpd服务器是最好的方法,我应该使用什么Erlang服务器?
它应该尽可能轻,不需要像SSL这样的功能 不需要处理大负荷。</ p>

谢谢</ p>
</ div>

展开原文

原文

I have a website built with PHP. I have an Erlang application running as a daemon on the same server. I need to call functions on the Erlang application from PHP and get back the result.

I've found PHP/Erlang and over PHP modules but I can't install a PHP module on this server, I can only use PHP code.

The only way I know to solve it is run an Erlang web server locally that the PHP will be able to talk to.

Is there a better way to solve it? If using a httpd server is the best way, what Erlang server should I use? It should be as light as possible and doesn't need features like SSL and doesn't need to handle large load.

Thanks

5个回答

$ cat erl.erl

#!/usr/bin/env escript

main(Args) ->
    io:format("~p
", [Args]),
    io:format("~p
", [(catch test(Args))]).

test([N1,N2|_]) ->
    lists:seq(list_to_integer(N1),list_to_integer(N2)).

$ chmod +x erl.erl

$ cat php.php

?php
var_dump(exec("./erl.erl 1 5"));
?>

$ php php.php

string(11) "[1,2,3,4,5]"

dongyi1429
dongyi1429 它比生产解决方案更能证明概念。 对于生产我认为可以使用一些接口,如dbus或zeroMQ(zeromq.org/bindings:erlang和zeromq.org/bindings:php)
接近 10 年之前 回复
dongliehuan3925
dongliehuan3925 不是一个非常适合生产的解决方案
接近 10 年之前 回复
dongmaoxi0477
dongmaoxi0477 您可以通过编译的erlang应用程序替换escript,只需“erl -run module function args”。 程序将每个PHP脚本生成一次,而不是那么多。
大约 11 年之前 回复
drtohng5613
drtohng5613 这个速度要慢得多,因为每次都必须编译escript。 此外,每次都必须生成一个shell命令。
大约 11 年之前 回复
dtv8189
dtv8189 你应该在php中使用php.net/proc_open,并且最有可能与erl.erl中的其他erlang节点进行通信,但我认为你可以自己做:)
大约 11 年之前 回复



查看 erl_call </ code>。 http://www.erlang.org/doc/man/erl_call.html </ p>

这是一个unix程序,用于调用erlang中的函数。 它将启动一个虚拟erl节点,执行命令并返回结果。 您可以使用PHP来调用erl_call,然后使用它返回的结果。</ p>
</ div>

展开原文

原文

Have a look at erl_call. http://www.erlang.org/doc/man/erl_call.html

It is a unix program which is used to call a function in erlang. It will start a dummy erl node, execute the command(s) and return the result. You could use PHP to call erl_call and then use the results it returns.



我会运行一个网络服务器,例如 mochiweb 托管erlang代码。 PHP代码将使用 curl 将以JSON编码的http查询发送到 受Mochiweb。 Mochiweb有一个JSON编码器/解码器,PHP有本机JSON支持。</ p>

即使每个东西都在同一台服务器上,也只需使用HTTP。 处理所有低级别的东西,如果你需要扩展,它将更容易,因为使用HTTP扩展是一个已解决的问题。 Mochiweb重量轻,性能高。 </ p>
</ div>

展开原文

原文

I'd run a webserver such as mochiweb hosting the erlang code. The PHP code would use curl to send http queries encoded in JSON to mochiweb. Mochiweb has a JSON encoder/decoder and PHP has native JSON support.

Even if every thing is on the same server, just use HTTP. Handles all the low level stuff and if you need to scale, it will be easier, as scaling with HTTP is a solved problem. Mochiweb is light and has high performance.



Erlang非常适合套接字I / O:也许你可以使用某种管道?</ p>

< p>这肯定比通过另一个WEB服务器层更直接。</ p>

使用函数 erlang:open_port </ strong>和 erlang:port_command </ strong >通过系统端口将数据输入/输出Erlang的函数。</ p>
</ div>

展开原文

原文

Erlang is excellent at socket I/O: maybe you could use a pipe of some sort?

This would be more direct than through another WEB server layer for sure.

Use the functions erlang:open_port and erlang:port_command functions to get data in/out of Erlang through a system port.

duanan5940
duanan5940 (您是否考虑过单独提问?) - Erlang非常安全; 事实上,它擅长线程化。 - 谷歌协议缓冲区:我不知道如何说出这些内容。
大约 11 年之前 回复
dtcyv3985
dtcyv3985 套接字是否是线程安全的,这意味着两个erlang进程可以将消息发送到gen_server正在侦听的同一个套接字? 谷歌协议缓冲区是否与code.google.com/apis/protocolbuffers/docs/overview.html相关,或者它是传递数据的更有效方式。 在我看来,简单比效率更重要。 谢谢
大约 11 年之前 回复
dongpi9494
dongpi9494 你自己在Erlang一边写了一个gen_server打开一个套接字,在PHP一边你也使用一个套接字(ca.php.net/sockets)。 在数据交换格式方面,您可以使用XML或JSON。
大约 11 年之前 回复
douyun6399
douyun6399 你能解释一下“某种管道”是什么意思吗? 我在erlang方面需要做什么,如何从php调用它?
大约 11 年之前 回复



我认为没有更好的解决方案。
我需要Erlang网络服务器在网上运行它。

有一些信息PHP + Erlang相关</ p>

http://yaws.hyber.org/cgi .yaws </ p>
</ div>

展开原文

原文

I don't think there is better solution. I need Erlang webserver to run it on web. here is some info PHP+Erlang related

http://yaws.hyber.org/cgi.yaws

dtjpnd7517
dtjpnd7517 我不需要使用erlang服务器(yaws)提供php服务。 我使用apache服务我的php,但希望能够从php脚本调用erlang函数。
大约 11 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐