我必須用PHP每10分鐘更新一個MySQL數據庫中的大表(產品)。我必須使用cron作業運行PHP腳本,並從CSV文件中獲得最新的產品。該表目前有~18000行,不幸的是我不知道在10分鐘內會有多少變化。最重要的是我不希望用戶在後臺注意到更新。根據CSV每x分鐘用PHP更新整個表格
這是我的想法和恐懼:
Idea1:我知道,有一種方法可以load a csv file into a table與MySQL,所以也許我可以用交易來截斷表,並導入CSV。但即使我使用交易,只要表格很大,恐怕有些用戶可能會看到空的數據庫。想法2:我可以比較舊的和新的csv文件with a library,只更新/添加/刪除更改的行。通過這種方式,我認爲用戶看不到空的數據庫是可能的,但恐怕這種方法會花費大量RAM和CPU,而且我正在共享主機。
所以基本上我想知道哪種方法是最安全的更新表,完全沒有用戶注意到它。
因爲您使用的是共享主機,所以您必須謹慎對待CPU和RAM。總共約有多少行?十分鐘內有多少人可能會改變?偶爾內存高峯一般是原諒的,但CPU是棘手的:你可能會發現'usleep()'在這裏很有幫助,允許在盒子上的其他應用程序獲得一個參考。 (並且,正如我最近發現的,無論如何,CSV導入都可以在非常小的RAM佔用空間中完成)。 – halfer 2015-02-09 16:33:52
感謝halfer,我更新了我的問題,並提供了更多詳細信息。 – frzsombor 2015-02-09 16:50:51
對於<10分鐘的寫入時間,18K行並不是那麼糟糕。使用事務在真正的共享主機上進行一些測試。如果您認爲大部分/全部都會更改,請擦除表格並重新插入,如果您認爲只有少數幾個將會更新,請僅更新已更改的行。 – halfer 2015-02-09 16:56:05