2010-05-25 177 views
4

我已經創建了一個php腳本來將rss feed導入數據庫。必須將數量巨大的數據源(從2004年到2010年,大約200萬條記錄)插入數據庫。我一直在瀏覽器中運行腳本,但它插入的速度(大約每秒1次),我懷疑它需要另外20-25天來輸入這些數據,即使我每天運行它24小時。我已經嘗試過在同一時間在不同的瀏覽器窗口上運行,並且在過去兩天內只完成了70000條記錄。我不知道如果我同時運行10-12個實例,服務器會如何反應。如何通過命令行在服務器上運行php腳本

我客戶端的程序員說我可以通過命令行直接在服務器上運行它。任何人都可以告訴我,如果我通過命令行運行它會產生多大的差異?還有什麼命令行語法來運行它?我在Apache,PHP/MySQL。我在網上嘗試了一個類似的答案,但他們似乎讓我感到困惑,因爲我不是系統管理員,或者在linux中很好,儘管我已經完成了像svn倉庫這樣的任務,並且在服務器上安裝了一些apache模塊,所以我希望如果有人告訴我如何去做,我可以管理這個。

回答

8

速度差異:最小。你所節省的所有資源都會阻塞在NET I/O和連接上(以及可以忽略的Apache開銷)。

如何做到這一點:

bash> php -f /path/to/my/php/script.php 

您可能只擁有php5-mod包安裝的是Apache的PHP,你可能需要安裝實際的命令行解釋,但很多發行版的同時安裝。我個人認爲你在算法中有一個效率問題。某些需要數天和數天的事情似乎可以通過緩存最壞情況性能分析(Big-O符號)來加速。另外,php香草不是很快,有很多方法可以讓它真的很快,但是如果你在做繁重的計算,你應該考慮c/C++,C#/ Mono(也許),可能是python(可以預先編譯,實際上可能不會更快)。

但強烈建議您探索這些其他網點。

0
在linux

php -f file.php 

php --help 

其他選項

1

要運行在命令行PHP腳本只是執行:

php yourscript.php 

如果你想保持這一進程在後臺運行做:

php yourscript.php & 

然後,您可以運行在多個進程同時。要確定當前正在運行的執行腳本的實例:

ps aux | grep yourscript.php 

但是,如果你認爲它的時間太長,試圖找出是否有一個在你的代碼中的任何瓶頸並優化它。

相關問題