一对多关系中的 PHP 和 API 调用性能和最佳实践

Posted

技术标签:

【中文标题】一对多关系中的 PHP 和 API 调用性能和最佳实践【英文标题】:PHP and API calls performance and best practices in one to many relationship 【发布时间】:2017-01-09 08:53:36 【问题描述】:

我们有一个带有电子学习网页的服务器,该网页将数据存储到 mysql 数据库中。主要有三个实体:elearning (id, name, description)question (id, elearning_id, question)answer (id, question_id, text, isCorrect)。因此,elearning与问题和问题的关系 答案是一对多。现在,我正在开发一个 API 来使这些数据库可以访问 来自 android 应用程序。为了获取这些数据,我想创建一个文件“elearnings.php”,它获取一个 elearning_id 并返回 此电子学习的所有问题和答案。当用户通过 Android 端回答问题时,我需要将它们存储到数据库中。 假设我需要为当前的电子学习包存储五个答案。就性能和最佳实践而言,哪个选项更好?是什么 通常的做法?

A)要创建一个php文件save_answers.php在一个数组中得到所有答案,所以只需要一个http调用 来自安卓 API的一边。但是,服务器端负责处理数组。

B)要创建一个只得到一个答案的php文件save_answers.php,所以在这种情况下,有必要进行五次http调用 来自安卓 API的一边。在这种情况下,服务器端不需要处理任何答案数组。

谢谢!

【问题讨论】:

这个问题会吸引意见......并不适合这个论坛。在意见部门:创建一个save_selected_answers.php文件,并在应用程序中累积已回答的问题和答案。服务器端,只保存那些。 【参考方案1】:

首先,我建议为您的 API 使用框架, Laravel 可能是最好的一个。 框架将提高您的应用程序的安全性,轻松连接到您的数据库,为开发提供有用的库等等。您还应该查找如何制作一个好的 REST API,以确保您从一个坚实的基础开始。它还将确保您为您的应用使用 MVC 模型,这是最好的。 对于您的问题,我建议您在控制器 Comment 中创建一个名为(例如)SetInfo 的函数,该函数采用用户 ID、问题 ID、评论和您希望存储的更多数据。

public function SetComment()
    //retreive JSON info
    $data = json_decode($_POST['data'])
    //validate your data
    // insert in the database.

我建议根据要求提供一条评论,这样更容易处理和验证。

【讨论】:

嗨@Nicolas!感谢您的回答!首先,我将看一下 Laravel 框架。另一方面,我同意你的观点,对于服务器端来说最好只通过请求得到一个答案,因为正如你所说,它更容易处理和验证。 Android 应用程序性能如何?你认为如果我发出 5 个 http 请求而不是 1 个,这个性能会受到影响吗?再次感谢! 我不认为它会改变什么,你提出的要求不足以产生很大的不同。您必须将它们保存在内存中,直到您有 5 条消息要发送。这可能很难管理。

以上是关于一对多关系中的 PHP 和 API 调用性能和最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

laravel eloquent 中的一对多关系

如何在 php Laravel 中的两个表之间创建一对多关系?

在 PostgreSQL 中存储一对多或多对多关系的最佳方式是啥?

使用 type-graphql typeorm 和 dataloader 处理一对多的最佳方法

在 Django 中使用“Self”关键字和一对多关系调用属性

GAE ndb 存储大型一对多关系的最佳实践