以前没用过协程,有点好奇。。。 php已安装Swoole扩展,webman2.1里也已开启Swoole协程,并且启动成功! 项目里有个[发送邮件]方法,用的PHPMailer包,那么我发送邮件时是不是【异步】方式? 第一次使用协程,可能描述的不恰当,请大佬赐教!
mark
这里可以使用协程异步方式。协程的好处就是把一些业务异步方式(以前这部分就要使用消息队列实现(PHP))。比如注册成功后,发送邮箱信息;就可以用异步。
感谢回复!您的意思是说,我这边还是要封装个异步的方法来调用[发送邮件]么?
传说swoole会接管,自动协程(不包对)。
Coroutine::create(function(){ Timer::sleep(1.5); echo "hello coroutine\n"; });
官方给了协程例子测试下就知道了。php协程还没有使用过我只是使用过go的协程,那真是美滋滋
嗯嗯,感谢两位回复!swoole文档里【Swoole4 或更高版本拥有高可用性的内置协程,可以使用完全同步的代码来实现异步 IO,PHP 代码没有任何额外的关键字,底层会自动进行协程调度】,很神奇~
经测试在swoole6的情况下,一些涉及到curl的操作并不能简单的一键协程化,各种报错。所以针对一些第三方库还是要改造
看了下webman协程代码,以及swoole文档:https://wiki.swoole.com/zh-cn/#/coroutine 貌似不需要专门改造第三方包,业务代码写在这里面就OK了。
// 创建协程 Coroutine::create(function(){ // 你的业务代码,比如发送邮件 });
最好是原生代码。不要使用库。因为一些包基于是fpm模式下,你现在协程下有可能会出现问题。
嗯嗯,感谢解答!
mark
这里可以使用协程异步方式。协程的好处就是把一些业务异步方式(以前这部分就要使用消息队列实现(PHP))。比如注册成功后,发送邮箱信息;就可以用异步。
感谢回复!您的意思是说,我这边还是要封装个异步的方法来调用[发送邮件]么?
传说swoole会接管,自动协程(不包对)。
Coroutine::create(function(){
Timer::sleep(1.5);
echo "hello coroutine\n";
});
官方给了协程例子测试下就知道了。php协程还没有使用过我只是使用过go的协程,那真是美滋滋
嗯嗯,感谢两位回复!swoole文档里【Swoole4 或更高版本拥有高可用性的内置协程,可以使用完全同步的代码来实现异步 IO,PHP 代码没有任何额外的关键字,底层会自动进行协程调度】,很神奇~
经测试在swoole6的情况下,一些涉及到curl的操作并不能简单的一键协程化,各种报错。所以针对一些第三方库还是要改造
看了下webman协程代码,以及swoole文档:https://wiki.swoole.com/zh-cn/#/coroutine
貌似不需要专门改造第三方包,业务代码写在这里面就OK了。
最好是原生代码。不要使用库。因为一些包基于是fpm模式下,你现在协程下有可能会出现问题。
嗯嗯,感谢解答!