php - 使用 PHP 作为 "front end"的 Haskell Web 应用程序

标签 php haskell web-frameworks

Haskell 网络开发世界发生了很多伟大的事情,一些可用的框架(Yesod 和 Snap 服务器)似乎相当成熟。然而,学习曲线可能有点陡峭,也许构建 Web 应用程序不能完全被视为 Haskell 的强项。

另一个SO question of mine的答案表明在 Haskell 中编写 PHP 扩展应该是可能的。事实上,我目前正在尝试将一个小型 Haskell 程序转换为一个 PHP 扩展,作为概念验证。

所以,问题是 - 是否有必要创建一个 Haskell 网络框架,作为 PHP 扩展运行,并将所有请求/响应/cookie 等留给 PHP 处理

创建这样一个框架涉及哪些设计决策?现在,我唯一能想到的是它可能会公开一个 XML/JSON API,PHP 页面可以使用 GET 和 SET 函数调用访问它。

最佳答案

我想不出这有任何意义的用例。如果您想要其他东西来处理 HTTP 请求/响应,最好直接写入 Apache API。

引入 PHP 可以为您提供参数解析和 cookie 处理,但也引入了许多其他愚蠢的事情。不仅许多常见做法非常不安全或不安全,而且您仅限于内容生成——如果您想根据 URL 分派(dispatch)到代码的其他部分,您必须自己编写所有内容。许多成熟的 PHP 程序最终只有一个“启动”PHP 脚本。如果您想对上传的文件做任何有趣的事情,您也会遇到问题,因为 PHP 以次优的方式处理它。

理论上,您可以在您的 Haskell 扩展中执行一些处理器密集型操作,但在这种情况下,您也可以只为 PHP 编写一个 C 扩展。无论如何,PHP 调用永远不应该停留很长时间。

似乎您将自己限制在 PHP 的 web 应用程序的脑损伤模型中,以获得参数和 header 解析的微不足道的好处。

为 Apache API 编写一个 Haskell 接口(interface)可能会带来解放。您可以依赖久经考验的 Web 服务器,还可以挂接到 Apache 请求周期的每个阶段。 Apache 不时预 fork 和杀死 child 的方式可能是处理 Haskell 空间泄漏的一种方式,尽管这是一种大锤方法。

关于php - 使用 PHP 作为 "front end"的 Haskell Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6345666/

相关文章:

haskell - Haskell中do block 中 `<-`的含义

javascript - 在按钮的onclick属性中传递php数组并在javascript中读取它

php - 如何将数组的json对象转换为php数组

haskell - 如何在不执行括号的情况下定义简单的 RIO LogFunc

haskell - "Open Existing Project"与 Haskell for Mac?

web-services - 如何在 swagger-go 中使用 golang echo web 框架?

最适合基于表单的应用程序的 RAD 的 Java 框架、库或 IDE?

java - 是否可以使用 Web 框架但不依赖于该框架?

php - 法尔康。如何从 mongoClient/service 连接获取数据库名称

php - 与关联数组中的 array_combine/两个数组相反的函数