php多线程foreach,php的foreach循环6万多次应该如何使⽤多
线程
背景:我在thinkphp框架下使⽤foreach循环⽣成⼀个缓存,然后在别的控制和⽅法下调⽤缓存。
⾯临的问题是⾸先排除按需⽣成,因为不确定6万多条数据中那⼀条能够⽤到,所以需要⽣成全部内容,⼜因为⽣成内容耗时太长所以发问题求教, 缓存中每条数据有6个字段其中4个为string,2个为int
现在的运⾏⽅式是直接foreach循环然后使⽤S⽅法⽣成⽂件缓存。 这样⽣成的⽂件缓存⼤约为15M,⽣成的时长为5-7s,含数据库查询时间。
foreach($data as $v){
$arr[$v['id']]=$v;
}
S('cache',$arr);
请问1、如果采⽤多线程⽅式,应该如何运⾏?
或者给我讲讲如何分多线程的原理也可以
【已解决】2、使⽤phpredis缓存的话,使⽤hash类型应该如何批量插⼊键值
我的意思是,将数组直接写⼊进去,但是不序列化他
$cache=new Redis();
$cache->connect(......)
foreach($data as $v){
$arr[$v['id']]=$v;
php支持多线程吗foreach($v as $k=>$val){
$cache->set($k,$val);
}
}
发现在phpredis中有⼀个hmset(key,$array)可以批量设置
回复内容:
背景:我在thinkphp框架下使⽤foreach循环⽣成⼀个缓存,然后在别的控制和⽅法下调⽤缓存。
⾯临的问题是⾸先排除按需⽣成,因为不确定6万多条数据中那⼀条能够⽤到,所以需要⽣成全部内容,⼜因为⽣成内容耗时太长所以发问题求教, 缓存中每条数据有6个字段其中4个为string,2个为int
现在的运⾏⽅式是直接foreach循环然后使⽤S⽅法⽣成⽂件缓存。 这样⽣成的⽂件缓存⼤约为15M,⽣成的时长为5-7s,含数据库查询时间。
foreach($data as $v){
$arr[$v['id']]=$v;
}
S('cache',$arr);
请问1、如果采⽤多线程⽅式,应该如何运⾏?
或者给我讲讲如何分多线程的原理也可以
【已解决】2、使⽤phpredis缓存的话,使⽤hash类型应该如何批量插⼊键值我的意思是,将数组直接写⼊进去,但是不序列化他
$cache=new Redis();
$cache->connect(......)
foreach($data as $v){
$arr[$v['id']]=$v;
foreach($v as $k=>$val){
$cache->set($k,$val);
}
}
发现在phpredis中有⼀个hmset(key,$array)可以批量设置
还是⽤多进程吧,php中貌似对线程⽀持的不是很好,在⼀些系统上不能⽤。你查看fork函数,然后就知道怎么⽤多进程了。
相关标签:php
本⽂原创发布php中⽂⽹,转载请注明出处,感谢您的尊重!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。