Laravel:控制器发送给C

时间:2018-04-20 06:54:54

标签: c laravel architecture

我没有在软件架构中进行过实验,如果我的问题看起来很奇怪或者只是愚蠢,那么请提前抱歉。 (或者如果它是错误的论坛......)

我们有一个与Laravel框架配合良好的网络服务器,但我们需要进行高级数学功能。我们还有一个用C语言编写的程序(在另一个更强大的机器上)可以管理这种计算。

我想知道如何将数据从laravel控制器传递给该程序。是否有任何协议应该受到青睐?

或者我们应该在C程序中创建一个API并从Laravel进行调用吗?

这种情况似乎是最佳选择?

1 个答案:

答案 0 :(得分:0)

注意事项:

运行C程序来执行任务是PHP在与操作系统交互时实际执行的操作,因此这实际上是一种更常见的使用方案。

然而,这里的主要问题来自C程序远程定位的事实。您需要某种Web服务器来向其发送请求并检索响应。

使用CGI(以及扩展名FastCGI)实际上可以直接调用程序,但这就是问题所在。就个人而言,我发现整个世界可以直接调用托管在我服务器上的C程序有点令人不安。如果你想保护程序而不需要任何包装器,那么你需要修改程序本身以基本上充当API。虽然这并非闻所未闻,但考虑到已经有可用于构建API的解决方案,它将使您的生活更加艰难。

另外需要注意的是,在现代设置中,PHP本身实际上是在FastCGI上运行,所以它特别快,特别是与OpCache配合使用时。我提到这个,以防速度是避免制作PHP API的问题。

因此建议使用托管在远程计算机上的Laravel作为API。

以下是示例应用的工作原理:

<强> api.php

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    Log.d("Chex ", "Permission on request result came back with " + grantResults);
    EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}

默认情况下,Laravel会对API请求进行速率限制,但您可以在@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); } 中更改此值(如果这是一个计算量很大的操作,那么您可能还是想要这样做)。

您还可以选择使用基本身份验证或令牌身份验证,或者基本上是Laravel附带的任何其他内容。

注意:NodeJS也非常擅长做这些事情,所以如果你想要更多的选项,你可以考虑制作一个简单的节点应用来做到这一点。