【发布时间】:2013-01-31 07:41:05
【问题描述】:
<?php
header('Content-Type: text/html; charset=utf8');
$dbhost = '192.168.1.23';
$dbuser = 'demouser01';
$dbpass = 'demo*PW';
$dbname = 'testdb1';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error with MySQL connection');
mysql_select_db($dbname);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT='utf8'");
mysql_query("SET CHARACTER_SET_RESULTS='utf8'");
if(isset($_POST['start'])) {
$chi = 'chiiiii';
$id = 1;
for ($i = 1; $i <= 99999999999; $i++) {
$eng = substr(str_shuffle(str_repeat("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 5)), 0, 1024);
$math = substr(str_shuffle(str_repeat("1234567890", 6)), 0, 16);
$sql = "INSERT INTO test_tb (id,chi,eng,num) VALUES (".$id.",'".$chi."','".$eng."',".$math.")";
$result = mysql_query($sql) or die('MySQL query error');
$id++;
}
$id = 0;
sleep(60);
mysql_close($conn);
} else if(isset($_POST['stop'])) {
mysql_close($conn);
}
?>
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
<input type="submit" name="start" value="Start Insert">
<input type="submit" name="stop" value="Stop Insert">
</form>
网站有两个按钮,插入重复插入记录,停止插入。但是,我尝试使用 MySQL 关闭连接,它会在 PHP 中停止运行,但活动仍然存在。插件仍在继续执行。如何解决问题?谢谢。
【问题讨论】:
-
Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial. -
..也就是说,您为什么要尝试将
99,999,999,999记录插入数据库?您的主要问题是停止命令中引用的$conn与另一个命令中启动的$conn不同,因为它们是两个不同的请求。您也许可以将句柄 ($conn) 保存在$_SESSION变量中,然后引用它。 -
您无法使用
mysql_close()停止执行。为此,您必须终止该过程。有关更多信息,请参阅此链接stackoverflow.com/questions/3787651/… -
@h2ooooooo - 连接句柄等资源无法序列化或存储在会话中
-
哇哇循环中的查询
for ($i = 1; $i <= 99999999999; $i++) {??根据该循环,您似乎计划在一个查询中杀死您的服务器....