启用会话时,PHP mysql_connect无法解析主机名

时间:2011-03-01 22:56:29

标签: php mysql session

疯狂对吗?示例代码:

<?php
session_start();
$hostname="samplehost";
$username="sampleuser";
$password="samplepass";
$dbname="sampledb";

$link = mysql_connect($hostname, $username, $password) or die(mysql_error());
mysql_select_db($dbname, $link);
?>

将抛出Unknown MySQL server host 'samplehost' (2)。如果我们删除session_start()或仅在session_destroy()之前执行mysql_connect(),则可以正常使用。基本上,如果我们打开一个会话,它就像mysql_connect一样不会解析主机名。我们用于服务器的主机名已正确添加到/ etc / hosts。

这是一个运行PHP 5.3.2-1ubuntu4.7的生产服务器 - 刚刚开始发生。有人碰到这个吗?

编辑:应该提及,无论是否有会话,我们都可以指定数据库服务器的IP,并且它可以正常工作。

2 个答案:

答案 0 :(得分:2)

如果有人遇到这个问题 - 结果证明我们在Apache中拥有的虚拟主机数量存在问题。当您开始达到文件描述符的限制时出现,您会遇到一些奇怪的症状 - 当我们开始在PHP中收到“太多打开文件”错误时,它最终被诊断出来。

这是我们如何为新域自动生成虚拟主机的遗留设置。更好地管理这个过程,减少虚拟主机的数量,问题就消失了。

答案 1 :(得分:0)

为什么不先连接,然后开始会话?