2013-10-13 62 views
0

我有一個內容類型組成,我想刪除超過25萬節點。通過查看批量操作刪除在需要的方式很多時間(2天),並運行到錯誤。有沒有更快的方式直接通過數據庫來完成此操作。因此,例如,我可以清空數據庫中包含該內容類型字段的所有表。我覺得會刪除這些快100倍,但它會導致我的網站的問題做直數據庫的?刪除節點直接從數據庫

回答

0

激活Devel模塊的查詢日誌記錄功能。刪除一個節點。查看執行哪些查詢以刪除節點。這應該給你需要做刪除一個節點,包括掛鉤執行的查詢有什麼不錯的圖片。

你也可能想看看node_delete_multiple(),看看有什麼節點刪除(例如搜索索引重建)在其他動作將被執行。

爲了瞭解存在哪些相關鉤子實現的圖片,你能砍module_invoke_all()將呼叫記錄到hook_node_deletehook_entity_delete和檢查,如果他們做的比執行數據庫查詢等其他任務。

有了這些信息,您可以編寫一個PHP腳本或Drush命令,該命令可以比多次呼叫node_delete_multiple()更有效地刪除多個節點。尤其是引導Drupal並不需要完成(或者至少不經常)。


在另一方面,這只是問題的第一個50個節點上呼籲node_delete_multiple(),直到所有相關節點都走了Drush命令更快實現。可能值得接受增加的處理時間來節省開發時間。