簡體   English   中英

在PHP中設置一段時間的睡眠時間

[英]setting Sleep time for a while loop in php

大家好,我試圖編寫一個更新腳本,在該腳本中,我需要為每一行設置睡眠時間,然后繼續執行該過程

只要該過程如此龐大且無法一次完成(將Latin-1字符集轉換為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";

  }

 }

您是否嘗試過簡單的睡眠命令

睡眠(2);

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

似乎您在每個表之間而不是在每個列更新之間都在“睡眠”-這是您想要的方式嗎? 無論如何,如果數據很大2秒可能是太短的時間

Windows PHP中還存在一個錯誤,您必須設置無限的時間限制,否則睡眠會占用大量CPU。

set_time_limit(0);

與Simon不同,我可以看到在更新之間留有一些優點,但是為什么要在單獨的操作中更新每一列呢? 如果一次全部更改,將會更快。

我看不到您的睡眠努力。 在那兩秒鍾內,您還在等什么? 該腳本在休眠時無法執行其他工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM