2012-10-20 147 views
0

爲什麼使用25%的CPU的php cli進程,有沒有辦法減少這種情況?現在我正在運行3個實例,但顯然我想運行更多以更快完成工作。加速php-cli

背景信息:我正在將數據從transbase數據庫移動到mysql數據庫。 enter image description here 編輯:如果我在瀏覽器中運行這個在CPU上沒有這麼明顯的負載。

回答

0

更多的流程並不意味着更快的處理。 PHP過程儘可能快地儘可能快地完成任務。這可能是25%,因爲你有一個四核處理器,它是一個單線程任務。

理想情況下,如果可以將每個進程分配給不同的代碼,則需要4個進程。另外,由於等待數據庫或磁盤I/O,單個線程無法始終全部使用所有CPU功率,因此請繼續並運行更多進程。並不是第五個進程會崩潰,因爲所有的CPU功耗都用完了;它只會佔用它的份額,而操作系統將處理能力分配給所有正在運行的進程。

只是不開始太多;每個進程都有一點開銷,並且你不會從200個同時進程中受益。

+0

這一切都有道理,但它爲什麼這麼多?當通過cgi運行時,httpd進程總是低於10%,我可以在瀏覽器的多個選項卡中運行它。 – slash197

+0

在cli中運行也意味着您實際上正在創建一個新進程,包括每次執行它時PHP本身的初始化。我認爲在Apache中,有一組初始化的工作進程被回收用於新請求,因此只有要執行的腳本纔會被解析和初始化,甚至可能會被緩存。 – GolezTrol