# 同步
同步代码主要是指调用某个逻辑时,会等待到该逻辑返回调用结果.
例如:
<?php
$num = 30;
$result = M('test')->select();//伪代码,查询数据库
sleep(3);//伪代码,当成执行了3秒才返回
echo json_encode($result);//返回数据
只有当select查询到数据时,才会返回数据给$result,这个值一定是数据库操作完毕返回的值
例如:
<?php
$num = -30;
$result = abs($num);
echo json_encode($result);//返回数据
abs会返回数据给$result,这个值一定是abs正确操作的值
例如:
用户请求www.easyswoole.com,页面会一直等待easyswoole响应数据.
例如:
<?php
//模拟发送邮件中
$status = send();
sleep(30);//发送邮件花费30秒
echo "发送邮件".$status?'完成':'失败';
等待发送邮件的成功/失败,就是同步
# 异步
异步代码主要是指调用某个逻辑时,不会等待该逻辑返回的结果,只会返回是否已经调用的最初结果(或不返回)
例如:
调用$.ajax(),默认情况下是异步ajax,它会继续往下执行代码,当有结果返回时通过回调事件进行处理.
例如:
<?php
$pid = pcntl_fork();
if ($pid == 0) {
//子进程
//模拟发送邮件
sleep(30);//发送邮件花费30秒
exit(0);
}
pcntl_waitpid($pid, $status, WNOHANG);
echo "发送邮件中";
通过新开一个进程去处理发送邮件的任务,在当前进程中不关心发送邮件的结果,直接往下执行