mysql服务器由于将API响应存储在php中而消失


mysql server has gone away in result of storing API response in php

我正在经历mysql服务器已经离开,通过php代码将API结果存储在mysql数据库中的响应如下,

$api_response = sendmsg($group_detail['cell_no'], $SMS); //function to execute API
    //update sms sent record
$sql = "INSERT INTO sms_sent_record (record_id, api_response) 
                         VALUES (NULL, '$api_response')";
$result = mysql_query($sql) or die('Error, updating sms & group count               
              in sms_sent_count failed : ' . mysql_error()); 

我尝试过许多其他选项,比如将api响应存储在数组中,然后将其存储在mysql表中,但无论如何,它都会抛出相同的错误。此错误之后函数中的其他代码将不会由服务器执行。

我认为这是由于api响应延迟和mysql中的超时问题。

有什么方法可以避免这个错误并以正确的方式存储结果吗。

如果省略sendmsg并执行:,它是否有效

$api_response = 'test';//sendmsg($group_detail['cell_no'], $SMS); //function to execute API 

如果是,sendmsg()是否在任何时候都使用某种mysql连接?如果是这样,您可能希望存储第一次连接到数据库时的链接,然后重用它

$link=mysql_connect();
..
..
mysql_query($sql,$link);

消息消失有很多原因,但我怀疑您的问题是在API调用(发送SMS?)之前打开了与DB的连接,而API调用导致服务器在INSERT运行之前终止连接

尝试将打开的数据库连接移动到INSERT语句之前:

$api_response = sendmsg($group_detail['cell_no'], $SMS); //function to execute API
// open connection here
$sql = "INSERT INTO sms_sent_record (record_id, api_response) 
                         VALUES (NULL, '$api_response')";
$result = mysql_query($sql) or die('Error, updating sms & group count               
              in sms_sent_count failed : ' . mysql_error()); 

检查您设置的等待超时值这是

服务器在上等待活动的秒数非交互连接,然后关闭。

如果将此值设置得很低,则服务器将在打开连接和运行查询之间超时连接。