php的异步非阻塞开发

同步、异步

阻塞、非阻塞

多进程、多线程(php是多进程单线程)

 

同步:在发出一个功能调用时,在没有得到结果之前,该调用就不返回,也就是必须一件一件事做,等前一件做完了才能做下一件事

异步:当一个异步过程调用发出后,调用者不能立刻得到结果,实际处理这个调用的请求在完成后,通过状态、通知和回调来通知调用者。

阻塞:指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)

非阻塞:在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回

 

php无法做到多线程,但可以实现多进程

 

同步请求中可实现阻塞或者非阻塞,异步调用亦如此;

在做任务调度,或者高并发处理时候,经常需要实现异步非阻塞情况,下面是php能实现的几种方式:

第一种:stream_socket_client

第二种:fsockopen

第三种:curl下的curl_multi_init方式

第四种:通过pcntl扩展,实现多进程之后各自进程实现异步非阻塞

第五种:通过消息队列和crontab定时任务实现异步非阻塞,比较常用

 

猜你喜欢

转载自wsluozefeng.iteye.com/blog/2258390