Heim >Backend-Entwicklung >PHP-Tutorial >高手帮忙看一段代码,为什么内存耗尽

高手帮忙看一段代码,为什么内存耗尽

WBOY
WBOYOriginal
2016-06-23 14:11:48910Durchsuche

$i = -1;while( $i++ < 495000000 ) {        $rand_uid = rand(100000000,105000000);        $rand_fuid = rand(100000000,999999999);        $tab_name = get_hash_table('friends',$rand_uid);        $up_array = array(                                'uid' => $rand_uid,                                'fuid' => $rand_fuid                );        insert_table($tab_name, $up_array,1);}


需要测试数据,要把5亿条数据写入到500个mysql表里面,直接用php命令执行的代码,为什么会内存耗尽?

多谢!


回复讨论(解决方案)

这个以前发的,来个人接一下分啊!

http://bbs.csdn.net/topics/390121151

应该不会,但如果你的硬盘空间不足,就不好说了
至少 insert_table 应判断是否插入成功

不知到 get_hash_table 的算法,但 $rand_uid 的数据跨度是 5000000

分批次执行,释放内存

应该不会,但如果你的硬盘空间不足,就不好说了
至少 insert_table 应判断是否插入成功

不知到 get_hash_table 的算法,但 $rand_uid 的数据跨度是 5000000

谢谢回复 !

磁盘空间够大,io也正常。

分批次执行,释放内存


关键是我不知道哪部分消耗了内存啊!

用 memory_get_usage 函数看一下


分批次执行,释放内存


关键是我不知道哪部分消耗了内存啊!

个人表示这个段代码跟死循环基本无差别了,就是他会执行完,在循环体里SLEEP一下看看

你最好把get_hash_tableh和insert_table都贴出来!



我看了下磁盘io,应该是这个导致的

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn