gpt4 book ai didi

php - 最小化来自 webhook 回调的 MYSQL 连接

转载 作者:行者123 更新时间:2023-11-29 18:12:43 25 4
gpt4 key购买 nike

我正在开发一个项目,需要我的服务器 xyz.com 从 abc.com(短信网关提供商)接收对 xyz.com/callback.php 的 POST/GET 响应。

下面是我目前如何处理callback.php上的响应

<强>1。接收来自abc.com的POST数据(此帖子包含唯一ID)

<强>2。连接到 mysql 数据库并更新用户 WHERE messageId=Same_ID_from_POST_data

这有效并且数据正在更新。然而,由于数千个 MYSQL 连接,它导致 CPU 过载。这是因为每当 API 服务器收到每条消息的送达回执时,callback.php 就会连接到 mysql 并更新数据库。

是否有最佳实践可以最大限度地减少我连接 MYSQL 的次数?
我正在考虑执行以下操作,但我怀疑这是否有意义。

<强>1。像以前一样从 api 服务器接收 post 数据。

<强>2。我没有更新 mysql,而是简单地使用以下代码写入 .txt 文件

$query.="更新用户设置 status='$post_data_for_status' where unique='$post_unique';

然后大约 10 分钟后,我使用 cron 运行一个 php 文件,该文件使用 mysqli_multi_query($connection, $query) 来更新表,从而使其成为单个连接。更新后,我只需取消链接 .txt 文件

即使上面的方法可行,我也不知道该怎么做。我确信有更好的选择。

请提出任何想法,并对长信表示歉意。

最佳答案

您正在寻找的听起来像是避免连接搅动,这是我们使用 Java/J2EE Web 应用程序中常用的“连接池”获得的好处之一。

PHP 不提供连接池(AFAIK)。但 PDO 和 mysqli 确实提供了“持久”连接,这提供了与连接池相同的一些好处(避免连接搅动。)

对于 mysqli,将“p: ”添加到 mysqli_connect 中的主机名中。

http://php.net/manual/en/mysqli.persistconns.php

对于 PDO,包括 PDO::ATTR_PERSISTENT => true在连接中。

http://php.net/manual/en/pdo.connections.php

请注意,对于持久连接,MySQL 连接会维护其状态( session 变量、临时表、用户定义的变量等)。例如,如果客户端发出诸如 SET time_zone = '+00:00'; 之类的语句或SET @foo = 'bar'; ,后续客户端重用该 MySQL 连接将继承 time_zone设置或用户定义的变量 @foo值(value);以前的客户端对 MySQL session 状态所做的任何更改。

关于php - 最小化来自 webhook 回调的 MYSQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47264686/

25 4 0
文章推荐: android - 以编程方式创建图标以用作 ItemizedOverlay 可绘制对象 - Android
文章推荐: javascript - Angular JS ng-click不能像过滤器一样在ng-repeat中工作
文章推荐: android - 如何在 android 中刷新和加载来自 json 提要的数据?
文章推荐: javascript - Cursor-following
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com