system/application/libraries/MultiRequest/Handler.php. On line 132 :
while(CURLM_CALL_MULTI_PERFORM === curl_multi_exec($mcurlHandle, $activeThreads)) {
以及:
system/application/libraries/MultiRequest/Request.php. On line 187 :
$responseData = curl_multi_getcontent($curlHandle);
我没有得到一件事:
268435456大于265556016,还有268435456比265553811和其他坐骑我收到的。有人可以解释我为什么要按照这种方式计算或分享链接,我可以在这里阅读更多相关信息。
亲切的问候
答案 0 :(得分:2)
我宁愿将此作为对Halayem Anis评论的评论,因为这是答案,但我还不能。这不仅仅是一种解释。
当错误显示“无法分配X字节”时,这是现有内存使用量的补充。如果您的PHP脚本已经使用了200000000字节的内存并且它尝试分配265556016字节,则265556016 + 200000000将是465556016,这超过内存限制268435456.。
您需要配置Multirequest以减少请求(我不知道软件,但基于github它会产生一堆CURL请求。)另一个选择是配置系统以允许更多内存用于PHP。这可以通过PHP.ini / ini_set文件memory_limit
选项或主机配置来完成。
答案 1 :(得分:0)
您需要为脚本或所有php配置分配更多内存,您可以通过修改/etc/php5/cli/php.ini
来实现
memory_limit = 256
到memory_limit = -1
表示如果需要,请使用您拥有的所有内存。
或者您可以在脚本中使用ini_set('memory_limit', '512M');
PHP还没有(还)一个非常聪明的garbage-colector
,并且通常在脚本完成时释放所有内存,通常我会生成skip
,count
类型的脚本并且bash
我正在执行我的脚本。
skip=0
count=0
while [ ! exiting_clause ]
do
php script.php --skip="$skip" --count="$count"
skip=$(($skip+$count))
done
这样我在所有数据中迭代但在多个实例中,通常你会获得一些性能,并且内存使用量会少很多。