更新2011/12/12:在我的(基于IIS的)主机包中,现在被隔离为FastCGI。我让他们关掉它,因为一个预定的任务一直在超时。我知道我现在在哪。再次感谢各位。
马克·伊利夫
更新2011/12/11:好的,我必须举起我的手,以避免无意中的误导。
由于您的许多建议,我现在发现这是我的托管包中的PHP页面的一个问题,而不是具体的MySQL。一个空的PHP页面仍然需要5-6秒的时间来加载,而带有ASP或HTML扩展的页面加载速度太快,无法测量。我要和我的主机提供商谈这个。
很抱歉没有想过要先检查一下,谢谢投球:非常感谢。
马克·伊利夫
我对MySQL/PHP还比较陌生,并且怀疑我正在做一些愚蠢的事情:
<?
// Slave page: block/unblock merchant
$id = $_POST["id"] ;
$val = $_POST["val"] ;
if ( isset( $id ) && isset( $val ) ) {
$conx = mysqli_connect ( "sql05", $dbAc, $dbPwd, "finewine" )
or die ("Conx failed") ;
// update record
$sql = "UPDATE wsMerchants SET
blockem = ".$val.", updateDT = '".date( "Y-m-d H:i:s" )."'
WHERE id = ".$id.";" ;
$result = mysqli_query( $conx, $sql ) ;
//tidy
mysqli_close( $conx ) ;
};
?>
Result of SHOW CREATE:
CREATE TABLE `wsmerchants` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`merchant` text NOT NULL,
`country` tinytext NOT NULL,
`blockem` tinyint(1) DEFAULT '0',
`benchmark` tinyint(1) DEFAULT '0',
`createDT` datetime NOT NULL,
`updateDT` datetime NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8我从JQuery (使用$.post)调用它。db表有29条记录和7个字段。
它起作用了,但是非常慢。
对于像这样可悲的旧Access (+ Classic ASP)查询,对于所有实际目的来说,都是即时的。在MySQL中,根据Firebug中的计时器,查询需要5-6秒。
我在托管的Windows环境中运行MySQL 5.0.51a + PHP 5.2.13。
我在这里讨论了其他问题,但它们似乎主要涉及复杂的SQL查询。
发布于 2011-12-07 19:25:25
除了其他问题,我怀疑这里的瓶颈是查询。
首先,从MySQL控制台尝试查询,以确保数据库服务器正常。
然后,制作一个简单的测试脚本,它只连接到数据库,不执行任何查询。确保在connect调用之后放置了一些东西,这样您就可以看到它何时完成连接。
无论如何,这是我的猜测--瓶颈在于数据库连接。
还有一件事,这是Windows中的AMP堆栈(WAMP,XAMPP),还是通过IIS运行PHP?
发布于 2011-12-07 19:28:29
在这个查询中,我没有看到需要>5秒的任何内容。Firebug可能会给您整个请求的时间,而不仅仅是查询时间。也就是说,如果客户机与应用服务器或应用服务器与数据库之间的延迟特别高,那么5秒就不是不可想象的。首先,我要对脚本进行基准测试,找出究竟是什么花了这么长时间。您可以通过在整个脚本中使用microtime()获取时间戳,然后减去它们来计算脚本的每个部分所花费的时间。
发布于 2011-12-09 16:57:01
从评论中的对话来看,你的问题似乎是网络问题,而不是你的代码问题。我的直觉告诉我,这可能是一个DNS问题,在这种情况下,您可能想看看本节的MySQL手册。或者,尝试在连接字符串中使用IP地址而不是"sql05",看看这是否加快了速度。
https://stackoverflow.com/questions/8421161
复制相似问题