4

同時実行性とデータの整合性を確保するために、特定のオブジェクトの相互排他ロックをどのように取得しますか? データベースまたはファイル内でロックを使用する必要がありますか、または PHP はこのようなものをサポートしていますか?

4

6 に答える 6

4

PHPはマルチスレッドをサポートしていないため、オブジェクトのロックメカニズムはありません。ファイルをロックしたい場合は、そのためにflockを使用できます。データベースエンジンは通常複数の接続を処理できるため、データベースをロックする必要はありません。

于 2010-02-08T15:24:37.107 に答える
0

PHPはマルチスレッドではないため、このようなものが必要になる可能性はほとんどありません...ただし、共有メモリやその他の外部リソースを使用する場合は必要になることがあります。このような場合は、スマフォを使用してください。

http://www.php.net/manual/en/function.sem-acquire.php

http://www.php.net/manual/en/function.sem-get.php

http://www.php.net/manual/en/function.sem-release.php

于 2010-02-08T15:24:25.867 に答える
0

ファイルの群れ。

データベースでロックを使用する場合は、それらのデータベースのロック機能を使用する必要があります。ほとんどすべてのデータベースは、何らかの形式のロックメカニズムを使用しています。

オブジェクトには何もありません

于 2010-02-08T15:25:53.210 に答える
0

セマフォをサポートしています

それは群れを持ってい ますhttp://www.php.net/manual/en/function.flock.php

MySQLでテーブルロックを行うことができます。

于 2010-02-08T15:29:25.433 に答える
0

PHP はマルチスレッド環境で実行できます。また、Web サーバーが複数のスレッドを使用していない場合でも、複数のプロセスを同時に実行できます。

この場合、並行性の問題は引き続き発生する可能性があります。

並行性の問題を解決するためにロックに似たものが必要な場合は、セマフォを使用できます: http://www.php.net/manual/en/function.sem-acquire.php

于 2018-12-24T22:45:36.833 に答える
0

他の人が答えたように、PHP はマルチスレッド化されていないため、オブジェクトをロックする必要はありません。ただし、データベースをロックする必要がある場合は、トランザクションを参照することをお勧めします。PHP と MySQL でトランザクションを実行するためのチュートリアルが多数あります (おそらく他の RMDBS も同様です)。

于 2010-02-08T15:55:51.083 に答える