2014-03-04 30 views
0

我需要一次運行一個php文件100000次。爲此,我在一個php文件(runmyfile.php)中使用了一個exec命令並使用putty調用該文件。 runmyfile.php文件具有以下代碼。在centos中一次執行php文件100000次

for($i=0;$i<100000; $i++){ 
exec('php -f /home/myserver/test/myfile.php > /dev/null &'); 
} 

它並行執行100000次myfile.php文件。

這myfile.php從MySQL數據庫表中提取行並執行一些計算並將此值插入到另一個表中。

但是當運行100000次時,它會掛起服務器。我使用centos作爲服務器。

有時候我也收到資源不可用的錯誤。

如果我運行它1000次,它工作正常。

當我檢查以下ulimit -a

core file size   (blocks, -c) 0 
data seg size   (kbytes, -d) unlimited 
scheduling priority    (-e) 0 
file size    (blocks, -f) unlimited 
pending signals     (-i) 514889 
max locked memory  (kbytes, -l) unlimited 
max memory size   (kbytes, -m) unlimited 
open files      (-n) 1000000 
pipe size   (512 bytes, -p) 8 
POSIX message queues  (bytes, -q) 819200 
real-time priority    (-r) 0 
stack size    (kbytes, -s) 10240 
cpu time    (seconds, -t) unlimited 
max user processes    (-u) 1024 
virtual memory   (kbytes, -v) unlimited 
file locks      (-x) unlimited 

和我的MySQL max_connection是200000

是否有我需要更改任何設置。這樣我就可以正確執行我的php文件100000次。

+1

運行100000個並行進程非常的OS徵稅。你爲什麼需要這個? – Mikpa

+0

好的。那麼我可以在centos中並行運行多少個進程。我需要它來運行cron來進行一些操作。 MySQL表將擁有最新的20億條記錄。 – user3378018

+0

這取決於很多事情,但請解釋原因。也許有更好的解決方案 – Mikpa

回答

1

也許你需要重新設計你的應用程序。如果您需要每天在Mysql數據庫中處理20億條記錄,我會說並行運行100000個腳本不是最好的方法。

這意味着如果我理解正確,每個腳本進程20000都會記錄。在每個腳本中處理更多記錄是不可能的?

看一看Big Data