同步、异步
阻塞、非阻塞
多进程、多线程(php是多进程单线程)
同步:在发出一个功能调用时,在没有得到结果之前,该调用就不返回,也就是必须一件一件事做,等前一件做完了才能做下一件事
异步:当一个异步过程调用发出后,调用者不能立刻得到结果,实际处理这个调用的请求在完成后,通过状态、通知和回调来通知调用者。
阻塞:指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)
非阻塞:在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回
php无法做到多线程,但可以实现多进程
同步请求中可实现阻塞或者非阻塞,异步调用亦如此;
在做任务调度,或者高并发处理时候,经常需要实现异步非阻塞情况,下面是php能实现的几种方式:
第一种:stream_socket_client
第二种:fsockopen
第三种:curl下的curl_multi_init方式
第四种:通过pcntl扩展,实现多进程之后各自进程实现异步非阻塞
第五种:通过消息队列和crontab定时任务实现异步非阻塞,比较常用