在php中设置while循环的睡眠时间

时间:2010-11-09 08:40:09

标签: php mysql

嘿伙计们我正在尝试编写一个更新脚本,其中我需要为每一行设置休眠时间然后继续该过程

只要这个过程如此巨大且无法立即完成(将Latin-1 Charset切换为UTF-8),那么我需要在每行转换后进入休眠时间

这是一个通常的工作代码转换成utf-8但睡眠时间不起作用,它再次一次完成。

 ob_implicit_flush();

 $result = $db->sql_query("SHOW TABLES");
 while ($row = $db->sql_fetchrow($result)) {
  $db->sql_query("ALTER TABLE $row[0] COLLATE $collation");
  $result1 = $db->sql_query("SHOW COLUMNS FROM $row[0]");
  while ($row1 = $db->sql_fetchrow($result1)) {
   if (preg_match('~char|text|enum|set~', $row1["Type"])) {
    $db->sql_query("ALTER TABLE $row[0] MODIFY $row1[Field] $row1[Type] CHARACTER SET binary");
    $db->sql_query("ALTER TABLE $row[0] MODIFY $row1[Field] $row1[Type] COLLATE $collation" . ($row1["Null"] ? "" : " NOT NULL") . ($row1["Default"] && $row1["Default"] != "NULL" ? " DEFAULT '$row1[Default]'" : ""));
   }
   echo"sleep for 2 seconds ....<br> $row[0] is already converted.";  
 // wait for 2 seconds 
   usleep(2000000);
   // back!
   echo date('h:i:s') . "\n";

  }

 }

4 个答案:

答案 0 :(得分:0)

您是否尝试过简单的睡眠命令

睡眠(2);

http://php.net/manual/en/function.sleep.php

答案 1 :(得分:0)

您似乎在每个表之间“睡觉”而不是在每个列更新之间 - 这是您想要的方式吗?无论如何,如果数据大2秒可能是太低的时间

Windows PHP中还存在一个错误,您必须设置无限时间限制,否则睡眠将导致CPU使用率过高。

set_time_limit(0);

答案 2 :(得分:0)

与Simon不同,我可以看到在更新之间留下空白有一些优点,但为什么要在单独的操作中更新每一列?如果你一次更改它们会快得多。

答案 3 :(得分:-1)

我没有看到你睡觉的努力。那两秒钟你还在等什么?该剧本在睡觉时无法完成其他工作。