先ほども言いましたが、詳しい理由を教えていただけますか?
先ほども言いましたが、詳しい理由を教えていただけますか?
私たちが通常話している同時実行性のほとんどは、php ではなく、Apache nginx などのサービスに関するものです
さらに、php はマルチスレッドですが、日常的なプロジェクトでは使用されません
実際、この文章自体が曖昧です。
まず前提条件を確認してください:
リーリー
PHP 言語コード自体は (ほとんどの場合)、マルチプロセスかマルチスレッドかは関係ありません。ただし、これは PHP がマルチスレッド/マルチ処理をサポートしていないという意味ではありません。 php-fpm はマルチプロセスおよびシングルスレッドであり、apeche のマルチスレッドモードはマルチスレッドです。 PHP は通常、プロセスやスレッドを PHP コード レベルで直接制御しません。リーリー
前提が成立しないと結論に因果関係がなくなる。これを言った人の本来の意図は次のとおりです。PHP は一般にプロセスとスレッドの制御をサポートしていないため、コードを通じてプロセスとスレッドを直接制御することによって同時実行の問題に対処することはできません。
そう言っても間違いではありません。
PHP の同時実行性の問題を解決する従来の方法は、さまざまな構成調整 (nginx.conf、php-fpm.ini、php.ini) を経て、負荷分散を行うことです。これらは PHP コードではありませんが、PHPer としてマスターする必要がある PHP に密接に関係するものです。
違う、あなたは間違っています!
PHP はマルチスレッドをサポートしていませんが、コマンド ライン プログラムのバックグラウンド操作や Web アプリケーションの php-fpm は複数のプロセスによって同時に処理されるため、たとえば 1 つの注文に 1 つの在庫があるなど、同時実行性の問題は避けられません。 、および 2 つの同時プロセス リクエストが同時に届いた場合、注文が売れすぎないようにするにはどうすればよいでしょうか?
マルチスレッドが考慮されていない場合でも、同時実行性は依然として存在しており、それを回避して最適化する方法を見つける必要があります
。
同時実行はマルチスレッドのみですか?これは狭すぎます
PHP は本質的にマルチスレッドをサポートしているため、スレッド セーフと非スレッド セーフには違いがあります。
PHP マルチスレッド拡張機能については、次を参照してください。
https://pecl.php.net/package/pthreads
この拡張機能。実用的な Real PHP マルチスレッド プログラミング サポートを提供します。これは通常、cli でのスクリプト プログラミングに使用されます。さらに、外国人の Feng Ge は、高性能リアルタイム ネットワークの開発をサポートする非同期マルチスレッド アーキテクチャを提供する拡張機能 Swoole も開発しました。 PHP を使用したサービス:
https://pecl.php.net/package/swoole
Swoole のマルチスレッドは、プログラマーが気にする必要はありません。一般的には、Swoole を構成するだけで済みます。 cli でのスクリプトプログラミングに使用されます
Nginx でよく使用される PHP FastCGI サービス PHP-FPM と同様に、プリフォーク MPM を使用する Apache と同様に、複数のプロセスを使用して同時実行に対するマルチコア応答を実装します。PHP-FPM はプロセス プール設定をサポートし、静的および動的プロセスをサポートします。番号設定、および Natural 透過的な「データベース接続プール」(永続的な接続)をサポートします:
MOD_PHP は、イベント MPM を使用して Apache で実行する場合にもマルチスレッド状態で動作します。これは、Apache イベント MPM がマルチプロセス マルチスレッド イベント駆動型 MPM であり、PHP が使用する必要があるスレッドセーフ バージョンであるためです。