假如客户端http 请求到服务端过来,服务端需要从 三个地方获取数据,然后返回给客户端,比如从A 接口获取数据 a,从数据库查询数据b,从C接口 请求数据获得数据 c ,每个操作耗时 两秒,如果用同步阻塞方式,则需要6秒处理完返回给客户端,php有没什么并发实现的方式,则总耗时是 耗时最大的操作,2秒。比如多线程?
http://www.cnblogs.com/jackluo/p/3919168.html
方案1:
用c++写多进程方案,fork多个进程出来解决。主线程负责读取/存储数据,子线程负责curl。
方案2:
用php写多进程方案,同方案1.主线程读取,子线程curl。
但是由于php没有多进程,不能直接操控线程/进程。所以只能依赖于linux来实现多进程。
php函数pcntl_fork()可以创建进程,等同于linux的fork。
和fork不同的是,pcntl_fork返回的0是子进程,返回的id是子进程的pid(而fork是父进程返回0,子进程返回ppid).
注意pcntl_fork()函数必须要在linux上面才行,据说要加载pcntl.so模块,但貌似不加载也行。
方案3:
php+shell模拟多线程
直接上 PHP 官网看教程,上面有详细的说明。
http://www.php.net/manual/en/class.thread.php