connect($conf, function ($db, $r) use (&$result) { $result[] = 1; }); (new swoole_mysql)->connect($conf, function ($db, $r) use (&$result) { $result[] = 2; });
Wie kann ich beurteilen, ob die beiden oben genannten AsyncIOs alle ausgeführt wurden, damit ich $result ausgeben kann?
connect($conf, function($db, $r) use (&a) { $a = 2; }); while ($a != 2) continue; echo $a;
Stimmt mit dem obigen Code etwas nicht? Warum wirdecho $a
nie ausgeführt?
A1:
既然使用非阻塞,那还是用在回调内部进行业务逻辑比较好
A2:
既然是异步操作,那么回调函数指不定是在哪个线程中执行的,所以没法保证上下文。建议使用协程语法去做。
总结:
题主得去了解一下swoole的异步模型,不要用同步的思维去开发。