<?php
$result = [];
(new swoole_mysql)->connect($conf, function ($db, $r) use (&$result) {
$result[] = 1;
});
(new swoole_mysql)->connect($conf, function ($db, $r) use (&$result) {
$result[] = 2;
});
如何判斷上面兩個 asyncIO 已經全部執行結束了,以便於我輸出 $result ?
<?php
$a = 1;
(new swoole_mysql)->connect($conf, function($db, $r) use (&a) {
$a = 2;
});
while ($a != 2)
continue;
echo $a;
以上這段程式碼有什麼錯誤嗎?為什麼 echo $a
永遠不會執行?
A1:
既然使用非阻塞,那還是用在回調內部進行業務邏輯比較好
A2:
既然是非同步操作,那麼回呼函數指不定是在哪個執行緒執行的,所以沒辦法保證上下文。建議使用協程語法去做。
總結:
題主得去了解swoole的非同步模型,不要用同步的思維去開發。