我有5个for循环
for(...){
sleep(3)// 耗时结果
}
for(...){
sleep(5)// 耗时结果
}
for(...){
sleep(6)// 耗时结果
}
for(...){
sleep(7) // 耗时结果
}
for(...){
sleep(10) // 耗时结果
}
在c#中,我只需要开5个线程,然后等待全部完成,返回结果。总耗时10秒。
$result = waitAll();
// 需要返回上面的计算结果给response ,所以不能用队列之类的。
刚刚webman执行效率和开发效率不是一般的快,真是太NB了!!但是在PHP或者webman有什么好的方式能处理这类的需求吗?核心诉求是有没有办法能并发执行for,然后等待全部执行完毕,返回结果。
请问这个是不是需要在php.ini中引入swoole拓展呢?
是的
安装教程:https://wiki.swoole.com/#/environment
可以放入队列里面然后等待完成后执行下面的业务?或者上swoole扩展开携程?
队列可以等待吗?
可以呀 也可以延迟队列
多进程+channel
我刚刚去看了一遍文档。还是不理解怎么弄
c#也来搞php了吗
C# 里面开多线程去做,php单线程就能完成这种并发请求。
安装swoole、openswoole扩展随便选择一个,具体用法:https://wiki.swoole.com/#/coroutine/wait_group?id=coroutinewaitgroup
什么扩展都不安装,选择php.net的方式
3.选择guzzle/http库异步并发库,请查看 https://github.com/guzzle/guzzle (自行查询用法)
谢谢!就是要这样的,我研究看看。不过我耗时并不是请求URL,如果不是IO密集型,是计算密集型的,单线程协程也能起到加速效果吗?
协程主要是处理IO密集型,对于计算密集型还会降低些性能。(毕竟协程调度也是有开销的)