我有大问题 我服务器的16Gb RAM
$scan_pol = new \Pool(2000);
$range = ip_range($start_range, $last_range);
foreach ($range as $ip_num => $ip_value) {
$scan_pol->submit(new scan($ip_value));
}
我在$ scan_pol 16581375任务中提交了
unset($range);
while ($scan_pol->collect()); // here i want to edit
$scan_pol->shutdown();
,当我在任务管理器中看到“性能”时,内存使用率过度增加至已满并弹出此错误 snapshot
然后停止CLI
我想在收集任务时从内存中删除任务以平衡内存使用量
注意:我将Pool Threads 2000更改为1000
并尝试减少$range
数组以减少RAM上的压力,但存在相同的问题
因为终止任务后收集不要unset
从内存中收集
请帮助
谢谢
答案 0 :(得分:0)
您可以将ip_range函数实现为生成器而不是迭代器,这将节省大量内存开销。看这里:http://php.net/manual/en/language.generators.overview.php
它可以直接在foreach循环中使用,而无需为变量分配值。
然后,请根据您的内存大小设置池的大小。
我希望这会对您有所帮助。