對(duì)workman的進(jìn)程概念有些模糊,舉個(gè)例子:
例如我,$worker->count=1,只指定一個(gè)進(jìn)程,那這一個(gè)進(jìn)程可以同時(shí)接受并處理多個(gè)請(qǐng)求嗎,還是說(shuō)這一個(gè)進(jìn)程必須處理完一個(gè)請(qǐng)求后,其它請(qǐng)求才可以進(jìn)入?
進(jìn)程處理請(qǐng)求的方式看業(yè)務(wù)代碼使用的是哪些庫(kù)。
如果業(yè)務(wù)調(diào)用的是pdo mysql 、redis擴(kuò)展等這些阻塞接口,那么單個(gè)進(jìn)程處理完一個(gè)請(qǐng)求后才能處理下一個(gè)請(qǐng)求。這種情況下提高并發(fā)量需要多開一些進(jìn)程,例如cpu的2-4倍,利用多進(jìn)程來(lái)提高吞吐量。
如果業(yè)務(wù)調(diào)用的都是是異步非阻塞接口,比如 workerman/redis
workerman/http-client
等?;蛘呤钦{(diào)用的swole/fiber協(xié)程(例如設(shè)置 Worker::$eventLoopClass = Workerman\Events\Swoole:class; Co::set(['hook_flags'=> SWOOLE_HOOK_ALL]);
)那么單個(gè)進(jìn)程內(nèi)可以看作是并發(fā)處理。