将 erlang 应用程序与 php 连接起来

发布于 2024-08-05 17:10:41 字数 324 浏览 3 评论 0原文

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

我找到了 PHP/Erlang 和 PHP 模块,但我无法在此服务器上安装 PHP 模块,我只能使用 PHP 代码。

我知道解决这个问题的唯一方法是在本地运行一个 PHP 能够与之通信的 Erlang Web 服务器。

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

谢谢

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

醉态萌生 2024-08-12 17:10:42

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

即使所有内容都在同一服务器上,也只需使用 HTTP。处理所有低级别的东西,如果您需要扩展,它会更容易,因为使用 HTTP 扩展是一个已解决的问题。 Mochiweb 很轻且具有高性能。

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.

萌梦深 2024-08-12 17:10:42

Erlang 在套接字 I/O 方面非常出色:也许您可以使用某种管道?

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

使用函数 erlang:open_porterlang:port_command 函数通过系统端口将数据输入/输出 Erlang。

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.

私藏温柔 2024-08-12 17:10:42

$ cat erl.erl

#!/usr/bin/env escript

main(Args) ->
    io:format("~p\n", [Args]),
    io:format("~p\n", [(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]"

$ cat erl.erl

#!/usr/bin/env escript

main(Args) ->
    io:format("~p\n", [Args]),
    io:format("~p\n", [(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]"

〃温暖了心ぐ 2024-08-12 17:10:42

看看erl_callhttp://www.erlang.org/doc/man/erl_call.html

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

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.

一笔一画续写前缘 2024-08-12 17:10:42

我认为没有更好的解决方案。
我需要 Erlang Web 服务器在网络上运行它。
这是 PHP+Erlang 相关的一些信息

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文