2012-03-21 53 views
3

我現在在服務器上運行了幾百個php腳本。它們中的每一個都運行循環並將數據插入到我的數據庫中。我這樣做是爲了學習mysql中的查殺過程。所以爲了殺死它們,我編寫了一個php文件,它循環遍歷整個流程列表並逐一殺死它們。問題是這個腳本沒有執行。它保持加載在我的瀏覽器(沒有錯誤...)。另外請注意,我不能在mysql中手動啓動一個show processlist,因爲mysql現在完全被重載,並且沒有任何響應。所以我猜想我的'殺死進程'腳本是隊列中的最後一個腳本,只會在最後執行。所以我的問題是要知道是否有辦法在mysql中強制一個進程並將其放在優先級第一的位置。預先感謝您的回覆。乾杯。馬克PHP MySql - 如何確定進程的優先級

這是怎麼了查殺流程:

$qry = mysql_query("SHOW FULL PROCESSLIST"); 
while ($row=mysql_fetch_array($qry)) { 
    $process_id=$row["Id"]; 
    $sql="KILL $process_id"; 
    mysql_query($sql); 

} 
+0

我認爲這是與服務器工作有關的問題。告訴我你是如何Killining :-) – zod 2012-03-21 15:16:22

+0

你好zod。我只是編輯帖子... – Marc 2012-03-21 15:18:03

+1

做殺人需要特權!更好的腳本在那裏..嘗試打印也是http://dev.mysql.com/doc/refman/5.0/en/kill.html – zod 2012-03-21 15:23:37

回答

0

我不知道這是否會實際影響MySQL的,但在Unix/Linux,你可以嘗試調用proc_nice()靠近你的腳本的頂部負增量(如-20)。它基本上和nice command一樣。

Wikipedia page on nice

」 ...好用於調用一個實用程序或shell腳本與特定的優先級,從而使該過程或多或少的CPU時間比其他進程的美好的事物 - 。 20是最高優先級,19或20是最低優先級。進程的缺省好處是從其父進程繼承的,通常爲0。

+0

有一個類似的命令叫''pcntl_setpriority()'](http://php.net/manual/en/function.pcntl-setpriority.php)可讓您設置任何進程的優先級。 – 2017-01-17 02:48:07