[英]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秒可能是太短的時間
Windows PHP中還存在一個錯誤,您必須設置無限的時間限制,否則睡眠會占用大量CPU。
set_time_limit(0);
與Simon不同,我可以看到在更新之間留有一些優點,但是為什么要在單獨的操作中更新每一列呢? 如果一次全部更改,將會更快。
我看不到您的睡眠努力。 在那兩秒鍾內,您還在等什么? 該腳本在休眠時無法執行其他工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.