2017-09-26 56 views
-1

我有一個工作Perl腳本將插入,正確地檢索從MySQL數據庫中的數據時,我與我的系統,並在劇本沒有問題做網上檢索數據庫中的數據。如何從多個perl腳本

我有數據庫包含10000符合兩個屬性ID,網址數據。

我必須使用Perl打開數據庫,並在我的機器上獲取id和url的前10個數據集,而在另一個系統中,它應該接下來的10行數據,就像我必須同時爲五臺獨立的機器一樣。

反正有做這樣或任何其他方法?

+0

我知道你是想不同的方案,以同一組數據的共同努力。那是對的嗎? – simbabque

+0

是的,相同的腳本應該可以在不同的機器上工作,並從單個數據庫檢索數據。 – Sugumar

+0

在不同的機器上運行相同的程序並使它們全都使用相同的數據庫沒有問題。有趣的是讓他們平行處理某些東西。這聽起來像你想要集中你的數據處理。機器a將執行1到10行,機器B執行11到20行,等等。現在的問題是,他們如何知道要運行哪些?如果存在靜態分配,則可以將參數用於程序。 – simbabque

回答

0

你可以用一個參數,告訴它,它是數字1,2,3,4或5。所以同一個腳本,只是調用,在每個5臺主機的其他號碼,創建自己的腳本。所以1號進程1-10,51-60,101-110等等,你明白了。只要沒有(id,url)對被刪除或插入,這將正常工作。追加是好的。如果你的腳本寫日誌文件,你總是可以看到完成了多少。你甚至可以在你的表格中添加一個「主機」和「狀態」列,表示記錄還沒有處理,正在由哪個主機處理或已經完成。

如果您不能列添加到現有的表,你可以使用第二個表由ID引用的第一個表。

如果你想花哨和解決插入/刪除問題(如果它適用於你),你可以更進一步,讓你的主機檢查下一個未處理的記錄,鎖定它,處理它,寫狀態「完成」,然後釋放記錄。

那麼你甚至可以有動態主機加入了黨和鎖,工藝,發行記錄只是因爲他們有資源可用。

====================

不同的開始:一個主機控制器和銷售您的10記錄的數據包。所以每個主機上的相同腳本必須接受傳輸10個ID的參數。第二個腳本注意到,當一個主機完成了10條記錄並給出了10條新記錄。

快樂腳本。

TomTomTom

+0

對不起,延遲答覆,通過你的方法我得到的解決方案,但如果我增加同時連接數量5至100。現在,當100 Connection連接到單個數據庫時,我正在這樣做,一旦工作完成,它將鎖定表並將結果更新爲數據庫。現在問題是當我們鎖定表時,剩餘的連接在表解鎖時等待的時間是否有任何與 – Sugumar

+0

類型相關的方法鎖定整個表僅用於整個表操作。只需鎖定要修改的密碼(並在完成後解鎖),以便其他記錄可以自由同時修改。 – TomTomTom