# Introducing Buddy: the PHP sidecar for Manticore Search

Manticore Buddy 是一个基于 PHP 的旁路应用和 Manticore Search 伴侣，它使开发更快更高效。在 C++ 开发可能缓慢的世界中，Manticore Buddy 赋予开发者快速创建和部署功能的能力。

得益于 PHP 语言及其庞大的社区，Manticore Buddy 提供了更高的灵活性和用户友好性。此外，随着最新版本 8+ 的发布，PHP 现在比以往任何时候都更快，使其成为希望加快工作流程的开发者的理想选择。

## C++ 与 PHP：为您的需求选择合适的语言

在构建高性能软件时，C++ 通常是首选语言。然而，其开发过程可能漫长而复杂，导致许多开发者寻求能提高生产力的替代方案。其中一种流行的替代语言是 PHP，它以用户友好性和快速性能著称。

在 Manticore Search，我们也有类似的问题，即需要频繁发布更新的同时保持高性能。为了解决这个问题，我们开发了 Buddy——一个使用 PHP 实现功能的旁路应用，这些功能不需要最高性能。

最终，使用 C++ 或 PHP 的选择取决于您的项目需求。如果性能是首要考虑因素，C++ 是最佳选择。另一方面，如果您更倾向于快速开发和易用性，PHP 可能是更明智的选择。

总之，为您的项目选择合适的语言至关重要。在做出决定之前，权衡性能、开发时间和易用性等因素非常重要。找到这些因素之间的平衡将带来成功且高效的项目。

## 使用 Manticore Buddy 的优势

Manticore Buddy 是 Manticore Search 开发的强大工具，提供多种优势以简化开发流程。以下是使用 Manticore Buddy 的一些关键好处：

- **加快开发流程**：Buddy 和 PHP 的直观界面使创建高效功能和扩展变得容易快捷，无需痛苦，从而节省时间并优化工作流程。
- **与 PHP 包的无缝集成**：Manticore Buddy 是用 PHP 编写的，允许与基于 PHP 的其他包轻松集成。开发者可以使用任何 PHP 包，减少开发时间，使其成为一个有用且多功能的工具。作为最受欢迎的语言之一，PHP 是开发者的宝贵资产。
- **提高所有技能水平开发者的可访问性**：清晰的文档和用户友好的界面使 Buddy 对所有技能水平的开发者都易于使用。这可能导致更多贡献者参与 Manticore Search 的开发，增加灵活性并提供未来改进的潜力。
- **无需更新 C++ 代码库即可发布额外功能**：Buddy 使我们能够实现一个强大的功能：无需经过我们漫长的 C++ 实现检查表，即可发布改进、扩展甚至新功能。相反，我们可以使用 PHP 快速可靠地完成。

对于任何使用 Manticore Search 并希望自行扩展它的开发团队来说，Manticore Buddy 是一个无价的资产。其直观的界面、使用任何 PHP 包的能力以及对所有技能水平开发者的可访问性，使其成为一个多功能工具，以改进 Manticore Search 的开发流程并提供满足特殊需求的灵活性。

## Manticore Buddy 的工作原理

听起来很棒，但您可能想知道我们是如何让 Manticore Search 和 Buddy 协同工作的？我们为 Manticore Search 和 Buddy 实现了一个内部通信协议。这个过程非常简单直接。要向 Buddy 添加内容并扩展其功能，您甚至不需要了解协议，因为我们已经完成了所有繁重的工作，使其易于构建在其之上。

让我们以 `SHOW QUERIES` 请求为例：

- Manticore Search 接收到一个查询。如果 C++ 代码中没有处理程序或查询导致错误，它通常会将结果返回给用户。但现在，Manticore Search 会首先请求 Buddy 尝试处理它。
- 因此，Manticore Search 使用基于 JSON 的内部通信协议将查询发送给 Buddy 并等待回复。
- Buddy 使用 ReactPHP 异步并行处理请求，以确保非阻塞性能。完成后，它将结果返回给 Manticore Search。
- 最后，来自 Buddy 的响应（无论是否有效）都会通过 Buddy 提供的结果代理到客户端。完成。简单，对吧？

这个过程如此简单且强大，您只需在 Buddy 中用 PHP 实现自定义查询即可轻松扩展和处理它们。

## Manticore Buddy 已经能够做什么

Manticore Buddy 已经开发出来，以支持 Manticore Search 的广泛功能，无论大小。最新版本 Manticore 6.0.0 包含了这些功能中的一些！

我们努力确定在初始版本中包含最关键的功能。这些包括 [auto-schema](https://manual.manticoresearch.com/Data_creation_and_modification/Adding_documents_to_a_table/Adding_documents_to_a_real-time_table#Auto-schema)，它根据接收到的第一个文档自动生成表，`BACKUP` SQL 命令用于轻松备份表，以及 `SHOW QUERIES` 命令用于显示当前执行的查询。

多线程和非阻塞处理都得到支持，**使用** **Parallel** PHP 扩展在单独的线程中处理查询。如果 Manticore Buddy 意外停止，Manticore Search 会检测到并自动重新启动它。

## 我想试试！教我如何安装？

安装 Manticore Buddy 简单直接。"**manticore-buddy**" 包是 "**manticore**" 包的依赖项，并在您安装 Manticore Search 时自动安装。

然而，要使 Manticore Buddy 正常运行，需要 **PHP** 和一组模块。为了简化此过程，我们开发了 **Manticore Executor**，这是 PHP 的专用版本，已预先编译包含所有必要的模块。

您只需 [安装](./manticoresearch-buddy-intro/../../install/) "**manticore**" 和 "**manticore-extra**" 包即可运行 Manticore Search、Manticore Buddy 和 Manticore Executor。不用担心，Manticore Executor 安装在独立路径中，确保不会与您当前的 PHP 安装产生任何冲突。

## 下一步？

Buddy 为我们带来的可能性是否让您感到兴奋？我们当然如此！我们有一些即将推出的特性，已经完成并准备发布。得益于 PHP 和 Manticore Buddy 的用户友好性，我们能够轻松提供这些特性。以下是一些即将推出的内容预告：

- **mysqldump** - 现在使用广泛用于 MySQL 的工具 mysqldump 来转储模式或数据比以往任何时候都更容易。
- 通过 [CLI](https://manual.manticoresearch.com/Connecting_to_the_server/HTTP#/cli) 的类似 **MySQL** 的 **表渲染** - Manticore HTTP 命令行接口。是的，只需向 `/cli` 端点发送 HTTP 请求，即可接收一个在终端中与 MySQL 客户端界面非常相似的渲染响应。
- **可插拔** 架构。想象一下，只需点击几次和几行代码，就可以为 Buddy 创建一个插件。您甚至可以将其发布到市场，浏览现有插件以满足您的需求。听起来不可思议，不是吗？

您可以通过使用我们的 Buddy 开发版本来提前测试其中的一些特性。只需前往 [dev 安装](https://manual.manticoresearch.com/nightly) 部分，了解如何在您的操作系统上安装它。

## 结论

Manticore Search 是近年来日益流行的开源搜索引擎。它被设计用于处理各种搜索需求，并应用于各种应用程序，从电子商务网站到在线市场。任何开源项目的成功在很大程度上都依赖于开发者的贡献，Manticore Search 也不例外。这就是 Manticore Buddy 出现的原因，它帮助我们为社区更快地推出和推进功能。

Manticore Buddy 是一个强大且灵活的搜索伴侣，旨在加快新功能的开发和 Manticore Search 功能的扩展。其易于使用的界面、清晰的文档和庞大的社区使其成为任何希望加快工作流程的 PHP 开发者的理想选择。

作为开发者，如果您想充分发挥 Manticore Search 的潜力，您应该考虑学习并为 Buddy 做出贡献。它将使您的生活更轻松，无需修改 C++ 代码即可更快地推出功能。想象一下，您只需编写一个 PHP 插件，就可以为您的用例添加自定义功能。强大！🙂

---

您想知道我们面临了哪些挑战以及我们是如何解决的吗？阅读我们的下一篇文章 – [Manticore Buddy：挑战与解决方案](/blog/manticoresearch-buddy-challenges-and-solutions/)
