[英]MySQL server has gone away error on server
我有以下關於在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服務器不見了
我嘗試按照MySQL錯誤2006中的建議增加max_allowed_packet
:通過添加以下行, mysql服務器已消失
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
在服務器上返回空值,但在localhost上可以正常工作。 為什么會這樣呢?
您是否嘗試過設置wait_timeout AND interactive_timeout
值?
例:
SET GLOBAL wait_timeout=300;
SET GLOBAL interactive_timeout=300;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.