在centos中一次执行100000次php文件

时间:2014-03-04 07:49:56

标签: php mysql memory-management centos ulimit

我需要一次运行一个PHP文件100000次。因为我在php文件(runmyfile.php)中使用了exec命令并使用putty调用该文件。 runmyfile.php文件包含以下代码。

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

并行执行myfile.php文件100000次。

此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 个答案:

答案 0 :(得分:1)

也许你需要重新设计你的应用程序。如果您需要每天在Mysql数据库中处理20亿条记录,我会说并行运行100000个脚本并不是最好的方法。

如果我理解正确的话,这意味着每个脚本会处理20000条记录。在每个脚本中都不可能处理更多记录?

查看Big Data