0

nginxがプロセス駆動型ではなくイベント駆動型であるとはどういう意味か誤解しているかもしれません(したがって、Apacheのようにすべてのスレッドにmod_phpがあるわけではありません)。すべてのnginxワーカースレッドに対して実行されているphp-cgiのインスタンスが1つあるため、すべてのphp実行が同期されると想定しています。これは、データベースからオブジェクトにアクセスするときに、データの保存に関して競合状態を心配する必要がないことを意味しますか?

私が正しい考えを持っているのか、それとも完全にオフベースなのかわからない。

ありがとう。私はウェブプログラミング/データベース/ウェブサーバーに不慣れです

4

1 に答える 1

0

「イベントドリブン」とは、アプリケーションが「そこに座って」、イベントが次に何が起こるかを駆動するのを待つことを意味します。典型的なイベントは、さまざまな形式のマウスまたはキーボードのアクティビティです。

対照的に、「プロセス駆動型」(多くの場合「手続き型プログラミング」)とは、物事を「監視」するプログラムがあり、それが実行することになっていることを常にかき回すことを意味します。

両方を同時にコーディングすることもできますが、そうすることは「高度な演習」です。少なくとも、そう考える人もいます。

さて、競合状態の大きな問題は、実際には、どのような絡み合いが発生する可能性があるかという問題です。データベースの場合、これが完璧な例です。グローバル変数でリターンエラーステータスをコーディングし、コード内のアクティビティ間に一時的な重複がある場合(多くの場合、「イベント駆動型」環境で発生しますが、純粋な手続き型プログラミングでも発生する可能性があります)間違ったエラーメッセージが表示される可能性があります。何かを起こしたスレッドにエラーがあり、高速のスレッドにはエラーがなかったが、その後に高速のスレッドが来て、ステータスを成功に設定した場合を想像してみてください。「スレッドセーフ」プログラミングが回避する条件があります。これは「競合状態」の一例にすぎません。

各スレッドのアクションが独立している限り、競合状態自体はありません。すべてはアプリケーションのロジックとそのニーズに依存します。ここでは、開発者だけが、それらが何であるかを知ることはできません。...これは航空会社の予約システムですか?...

于 2012-02-28T00:43:20.260 に答える