php - MySQL 服务器已经消失服务器上的错误

标签 php mysql error-handling

我有以下关于在 mysql 中存储有关 arXiv.org 页面的信息的代码

function paper_info($paper_id){
    $url = 'http://arxiv.org/abs/'.$paper_id;
    $options = array('http'=>array('method'=>"GET", 'header'=>"User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko\r\n"));
    $context = stream_context_create($options);
    $sites_html = file_get_contents($url, false, $context);
    $html = new DOMDocument();
    @$html->loadHTML($sites_html);
    $title = null;
    foreach($html->getElementsByTagName('meta') as $meta) {
        if($meta->getAttribute("name")=="citation_title"){ 
            $title = $meta->getAttribute('content');
        }
    }
    if(preg_match('~<blockquote class="abstract mathjax">(.*?)</blockquote>~si', $sites_html, $match)){
        $abstract = trim(preg_replace('#<span class="descriptor">(.*?)</span>#', '', $match[1]));
    }   

    return array($title, $abstract);
}
            $paper_id = "1509.05363v1";
            if(!isset($paper_info)) $paper_info = paper_info($paper_id);        
            mysql_query("INSERT INTO `data` (`ID`, `Action`, `Value`) VALUES (NULL, 'Submit', '0');");  
            mysql_query("INSERT INTO `data` (`ID`, `Action`, `Value`) VALUES (NULL, 'Paper ID', '".$paper_id."');");
            mysql_query("INSERT INTO `data` (`ID`, `Action`, `Value`) VALUES (NULL, 'Title', '".mysql_real_escape_string($paper_info[0])."');");
            mysql_query("INSERT INTO `data` (`ID`, `Action`, `Value`) VALUES (NULL, 'Abstract', '".mysql_real_escape_string($paper_info[1])."');"); 

代码在本地主机上运行良好,但是,当我将我的网站上传到在线服务器时,出现了这个错误

MySQL server has gone away

我尝试按照 MySQL error 2006: mysql server has gone away 中的建议增加 max_allowed_pa​​cket通过添加行

mysql_query("SET GLOBAL max_allowed_packet = 1073741824;");

但错误仍然发生。有谁知道为什么会这样?

尝试过之后

mysql_query("SET SESSION wait_timeout = 300;");
mysql_query("SET GLOBAL interactive_timeout=300;");
mysql_query("SET GLOBAL wait_timeout=300;");

错误现在没有发生,但是函数 paper_info 在服务器上返回空值,但在本地主机上工作正常。为什么会这样?

最佳答案

您是否尝试过设置 wait_timeout AND interactive_timeout 值?

例子:

SET GLOBAL wait_timeout=300; 
SET GLOBAL interactive_timeout=300;

关于php - MySQL 服务器已经消失服务器上的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32697819/

相关文章:

php变量比较== vs ===

Php附近的地方脚本帮助

php - ZF2 始终验证日期和时间格式 PT_BR 输入似乎不是有效日期

php - PHP 和 Weblogic 服务器的错误

php - MySql - 一对多关系

mysql - PHP Slim API 调用 get 后返回 null

mysql - 查询在不同服务器上返回奇怪和不同的结果

c# - 每天有一个日志

c - 我如何正确地在 C 中进行键捕获?

angular - 如何从Observable模拟错误而不会崩溃?