配列が再生されないPHPの配列6の本質である場合には、PHPとみなすことはできません。つまり、Swooleと同様の理由のコルーチンであるブラインド使用されているSwooleとコルーチン行く、理解していません。
まず、Swooleは、コマンドライン(CLI)モードから実行することができますので、我々は代わりに、コマンドラインを使用して開発し、デバッグしている php-fpm/apache
というように。
Swooleでは、我々は使用することができます`\Swoole\Coroutine::create()`
コルーチンを作成するために、またはあなたが速記``)(行くを使用することができます。
知人Swooleコルーチン
go(function(){
go(function(){
echo 0, PHP_EOL;
});
echo 1, PHP_EOL;
});
go(function(){
echo 2, PHP_EOL;
});
go(function(){
echo 3, PHP_EOL;
});
結果:
0
1
2
3
Swoole同期パターンは、コルーチンと比較されます
私たちは、Swooleは、I / Oインテンシブなシーンに適しコルーチン、同じハードウェア構成の環境では、それは従来の同期モードよりも多くのトラフィックを運ぶでしょうと言ってきました。
我々は、ファイルの読み込みと書き込み、I / O集中型のシーンに属しネットワーク通信要求(MySQLの、のRedis、HTTP、など)に精通しています。
SQLクエリは、従来の同期モードでは、100ミリ秒であると仮定すると、この時点での現在のプロセス100msのは、他の操作を行うことはできません。あなたはこのSQL 10回を実行している場合は、1秒以上費やす必要があるかもしれません。
そして、コルーチンの間であれば、異なるコルーチンが順次実行されるが、前待機100msのは、CPUが他の操作のコルーチンを実行するために、底を送出しません。つまり、最初のクエリが結果を返さないことがあり、いくつかのその他のお問い合わせは、MySQLに送信されたとして実施されています。それぞれ10コルーチン、SQLの実行これを有効にした場合、あなただけ完了するために、100 +ミリ秒を費やす必要があるかもしれません。
次のようにテストコードがあります:
Swoole\Runtime::enableCoroutine(); // 开启一键协程化
function work()
{
$pdo = new \PDO('mysql:host=127.0.0.1;dbname=db_test', 'root', 'root');
$pdo->exec('select SLEEP(0.1)'); // 模拟sql需要执行 100ms 的情况
}
$time = microtime(true);
for($i = 0; $i < 10; ++$i)
{
work();
}
echo 'time: ', (microtime(true) - $time), 's', PHP_EOL;
$time = microtime(true);
for($i = 0; $i < 10; ++$i)
{
go('work');
}
swoole_event_wait(); // 等待所有协程执行完
echo 'time: ', (microtime(true) - $time), 's', PHP_EOL;
結果:
time: 1.0326268672943s
time: 0.10734605789185s
上記のコードは、単一プロセス10に要求するために必要な処理時間を想定することができます。各要求は、100msのは、SQL文を実行する必要がかかります。
約1sのかかる同期モードは、FPMです。図から分かるように、待っている100msのは、何もすることはできませんが。
コルーチンモデルは、コストは0.1秒Swooleについてです。この待っている100msのはコルーチンをハングアップ時には、最低のスケジューリングは、CPUが他の操作のコルーチンを実行することができます。
上記の同期パターンの詳細は、従来のFPM Swooleコルーチンと比較されます
私は含めて、いくつかの情報をまとめたヘルプ皆、多くのPHPer常により多くのビジネスコードに方向音痴を書きません、私は上昇を開始する場所を知らない、高度な時間にいくつかの問題やボトルネックが発生し、に希望上記これらに限定されない:分散アーキテクチャ、拡張性の高い、高性能、高同時実行、サーバーのパフォーマンスチューニング、TP6、laravel、YII2、Redisの 、Swoole、Swoft、カフカ、MySQLの最適化、シェルスクリプト、ドッカー、マイクロサービス、nginxの、など高度な乾燥品のために必要な、より高度な知識が共有に皆のための自由であることができ、私は公式のグループに参加する必要があり、こちらをクリックしてください。
推奨読書: