我正在开发一个项目,要求我的服务器xyz.com从abc.com(短信网关提供商)收到对xyz.com/callback.php的POST / GET响应。
以下是我目前如何处理callback.php上的回复
1。从abc.com接收POST数据(此帖子包含唯一ID)
2。连接到mysql数据库和UPDATE用户WHERE messageId = Same_ID_from_POST_data
这项工作和数据正在更新。但是由于成千上万的MYSQL连接导致CPU过载。这是因为每当有来自api服务器的每条消息的送达回执时,callback.php就连接到mysql并更新数据库。
最佳做法是尽量减少连接MYSQL的次数吗? 我正在考虑做以下事情,但我怀疑它是否有意义。
1。像以前一样从api服务器接收发布数据。
2。我只需使用以下代码
写入.txt文件,而不是更新mysql$ query。="更新用户设置状态=' $ post_data_for_status' unique =' $ post_unique';
然后大约10分钟后,我使用cron运行一个使用mysqli_multi_query($ connection,$ query)的php文件来更新表,从而使它成为一个连接。更新后,我只需取消链接.txt文件
即使上述方法有效,我也不知道该怎么做。我相信还有更好的选择。
任何想法,请为长篇书信抱歉。
答案 0 :(得分:0)
您正在寻找的内容听起来像是避免连接搅动,这是我们使用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连接会维护它的状态(会话变量,临时表,用户定义的变量等)。例如,如果客户端发出SET time_zone = '+00:00';
或{{}等语句1}},后续客户端重用MySQL连接将继承SET @foo = 'bar';
设置或用户定义变量time_zone
值;对先前客户端所做的MySQL会话状态的任何更改。