加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MYSQL close connect无法暂停insert活动

发布时间:2020-12-13 21:46:59 所属栏目:PHP教程 来源:网络整理
导读:?phpheader('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_d
<?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)),1024);
    $math = substr(str_shuffle(str_repeat("1234567890",6)),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中停止运行,但活动仍然存在.插入仍然保持执行.如何解决问题?谢谢.

解决方法

由于PHP不允许您在请求者之间共享资源(AFAIK),因此有几种方法可以实现在另一个请求中停止进程的能力:

首先添加这一行:

if ( isset ($_POST['start']) ) {
    $_SESSION['continue'] = true;

然后用while替换你的for语句(看起来你不关心itterations的数量,如果是这样你可以改变这种行为):

for ($i = 1; $i <= 99999999999; $i++) {

用…来代替:

while ( $_SESSION['continue'] )

而不是关闭连接以停止插入执行此操作:

mysql_close ($con)

将包括:

$_SESSION['continue'] = false;

注意:不要忘记在脚本开头调用session_start().
就这样.

我假设您想要停止同一会话中的页面,如果不是这种情况,您可以使用ACP ore SHM.例如:

更换:

$_SESSION['continue'] = true

有:

apc_store( 'continue',true );

while ( $_SESSION['continue'] )

有:

while ( acp_fetch ('continue') )

$_SESSION['continue'] = false;

有:

apc_store( 'continue',false );

完成!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读